允许 dired-do-copy 和 dired-do-rename 动态创建新目录

Mik*_*kef 0 emacs elisp file-management dired

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

Rém*_*émi 5

这看起来像是一个应用建议的例子。问题是:提供什么建议。查看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)))))
Run Code Online (Sandbox Code Playgroud)

请注意,也许可以删除第一个when( when (member op-symbol '(copy move))),以适用于在 dired 中创建文件的更多情况。但我不确定何时调用 dired-mark-read-file-name,所以我在那里进行此测试以减少潜在的不需要的副作用