【发布时间】:2012-10-21 01:30:31
【问题描述】:
有没有人有一个 emacs lisp hack 允许在 dired-do-copy 或 dired-do-rename 期间动态创建一个新目录?我知道可以在运行这两个命令之一之前创建它。某些类型的“你确定...”提示的加分。
【问题讨论】:
标签: emacs elisp file-management dired
有没有人有一个 emacs lisp hack 允许在 dired-do-copy 或 dired-do-rename 期间动态创建一个新目录?我知道可以在运行这两个命令之一之前创建它。某些类型的“你确定...”提示的加分。
【问题讨论】:
标签: emacs elisp file-management dired
这看起来像是一个应用建议的案例。问题是:要做什么
建议。查看 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,所以我让这个测试在那里减少潜在的不需要的副作用
【讨论】:
c:/Users/family/AppData/Roaming/temp.emacs' to c:/Users/family/AppData/Roaming/temp110/temp.txt' failed: (file-error Copying file no such file or directory c:/Users/family/AppData/Roaming/temp.emacs c: /Users/family/AppData/Roaming/temp110/temp.txt) 我在 windows 和 dired+ 下使用 emacs 24.2,这可能会重新定义 dired-do-copy。有什么建议吗?