允许dired-do-copy和dired-do-rename即时创建新目录

时间:2012-10-21 01:30:31

标签: emacs elisp file-management dired

有没有人有一个emacs lisp hack,可以在dired-do-copy或dired-do-rename期间动态创建一个新目录?我知道它可以在运行这两个命令之一之前创建。某些类型的“你确定......”提示的额外积分。

1 个答案:

答案 0 :(得分:3)

看起来像是应用建议的情况。问题是:做什么 咨询。查看dired代码,似乎正确的目标是 dired-mark-read-file-name用于读取目的地 文件名。这将有效:

(defadvice dired-mark-read-file-name (after rv:dired-create-dir-when-needed (prompt dir op-symbol arg files &optional default) activate)
  (when (member op-symbol '(copy move))
    (let ((directory-name (if (< 1 (length files))
                              ad-return-value
                              (file-name-directory ad-return-value))))
      (when (and (not (file-directory-p directory-name))
                 (y-or-n-p (format "directory %s doesn't exist, create it?" directory-name)))
        (make-directory directory-name t)))))

请注意,可能会删除第一个whenwhen (member op-symbol '(copy move))),以便在dired中应用更多文件创建案例。但是我不确定何时调用dired-mark-read-file-name,所以我在那里进行测试以减少潜在的不必要的副作用