0

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

4

1 回答 1

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)))))

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

于 2012-10-21T11:40:53.370 回答