【发布时间】:2014-07-27 01:14:31
【问题描述】:
我正在寻找一些建议,请为dired-mode 创建与复制和移动文件相关的自定义函数,以便在目录不存在的情况下创建目录。默认行为是在目录尚不存在时简单地生成错误消息。
STICKING POINT:我心中的症结在于处理创建多个目录的错误尝试。例如,假设我们要将文件从主目录~/ 复制到/tmp/test/one/ —— 目录/tmp/test/ 已经存在,但/tmp/test/one/ 确实不存在。我没有输入/tmp/test/one/,而是错误地输入了/tmp/tesst/one——在这种情况下,应该有一条错误消息说明类似——嘿,你不能这样做,因为/tmp/tesst/必须首先存在之前你可以创建/tmp/tesst/one。当然,如果我正确输入了/tmp/test/one,事情就会顺利进行,因为/tmp/test/在这个例子中已经存在了。
最后,我假设我应该基于dired-do-create-files 创建一个新函数——修改以下代码部分:
(if (not (or dired-one-file into-dir))
(error "Marked %s: target must be a directory: %s" operation target))
任何超过难点的指导,或我没有想到的任何其他危险,将不胜感激。
【问题讨论】:
-
为什么创建一个新目录层级可以,但创建多个新层级是错误的?允许任意目录,但在它不存在时提示确认创建它怎么样?
-
@phils -- 我同意,如果它们尚不存在,那么能够深度创建多个目录(一举一动)肯定会很有用,并且要求确认肯定有助于避免错误。也许对新目录的第一级进行额外检查是确保我选择正确路径的最佳方式——例如——“嘿,您正在尝试创建 2 个新目录——即,@ 987654334@ -- 你确定要继续吗?" 而且,如果我正确输入了
/tmp/test/one,消息会说,"... 1 个新目录 -- 即.../one……” -
只是一个评论。 1. 这个想法不错。 2. 另一方面,点击
+来创建缺少的目录层次结构真的没什么大不了的。 (是的,当您使用+时,您也可能会误输入目录名称。) -
@Drew -- 感谢您查看此线程并提及
+(又名dired-create-directory)。所以,我修改后的大纲现在包括在(if (not (or dired-one-file into-dir)) (error "Marked %s: target must be a directory: %s" operation target))部分修改dired-do-create-files并插入dired-create-directory的修改版本。任何关于如何计算 和 的数量的想法都将由dired-create-directory创建的新目录将不胜感激 - 例如,“我们是否继续创建 2 个新目录 @987654345 @ - y / n?" -
使用类似于
dired-create-directory或make-directory中的代码。请参阅每个 fns 中的while循环。 IOW,您想通过执行类似于此类代码的操作来收集目录列表,然后提示用户确认显示该列表。