Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs 允许dired do copy和dired do rename动态创建新dir_Emacs_Elisp_File Management_Dired - Fatal编程技术网

Emacs 允许dired do copy和dired do rename动态创建新dir

Emacs 允许dired do copy和dired do rename动态创建新dir,emacs,elisp,file-management,dired,Emacs,Elisp,File Management,Dired,是否有人有一个emacs lisp黑客,允许在dired do copy或dired do rename期间动态创建一个新目录?我知道它可以在运行这两个命令之一之前创建。对于某些类型的“您确定…”提示,需要额外加分。这看起来像是在应用建议。问题是:该怎么办 忠告。看看dired代码,似乎正确的目标是 dired标记读取文件名,用于读取目标 文件名。这将有助于: (defadvice dired-mark-read-file-name (after rv:dired-create-dir-when

是否有人有一个emacs lisp黑客,允许在dired do copy或dired do rename期间动态创建一个新目录?我知道它可以在运行这两个命令之一之前创建。对于某些类型的“您确定…”提示,需要额外加分。

这看起来像是在应用建议。问题是:该怎么办 忠告。看看dired代码,似乎正确的目标是
dired标记读取文件名
,用于读取目标 文件名。这将有助于:

(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)))))
(defadvice dired mark read file name(在rv之后:dired create dir(在需要时创建dir)(提示dir op symbol arg files&可选默认值)激活)
(当(成员操作符号)(复制移动))
(let((目录名)(如果(<1(长度文件))
ad返回值
(文件名目录ad返回值)))
(何时(和(非(file-directory-p目录名))
(y-or-n-p(格式为“目录%s不存在,是否创建?”目录名)))
(使目录名为t(()())))

请注意,可能会删除第一个
when
when(成员操作符号(复制移动))
),以适用于在dired中创建文件的更多情况。但是我不确定何时调用dired mark read file name,所以我让这个测试在那里进行,以减少潜在的不必要的副作用,它看起来像是应用了一个建议。问题是:该怎么办 忠告。看看dired代码,似乎正确的目标是
dired标记读取文件名
,用于读取目标 文件名。这将有助于:

(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)))))
(defadvice dired mark read file name(在rv之后:dired create dir(在需要时创建dir)(提示dir op symbol arg files&可选默认值)激活)
(当(成员操作符号)(复制移动))
(let((目录名)(如果(<1(长度文件))
ad返回值
(文件名目录ad返回值)))
(何时(和(非(file-directory-p目录名))
(y-or-n-p(格式为“目录%s不存在,是否创建?”目录名)))
(使目录名为t(()())))

请注意,可能会删除第一个
when
when(成员操作符号(复制移动))
),以适用于在dired中创建文件的更多情况。但是我不确定何时调用dired mark read file name,所以我让这个测试在那里进行,以减少潜在的不必要的副作用

尝试了一个测试,通过评估advice defun并使用dired do copy“C”,它出现了以下错误消息。将
c:/Users/family/AppData/Roaming/temp.emacs'复制到
c:/Users/family/AppData/Roaming/temp110/temp.txt'失败:(复制文件时出错,没有这样的文件或目录c:/Users/family/AppData/Roaming/temp.emacs c:/Users/family/AppData/Roaming/temp110/temp.txt)我在windows和dired+下使用emacs 24.2,这可能会重新定义dired do copy。有什么建议吗?它不考虑这个案子。我的代码所做的是创建目录,如果有多个文件要复制或移动,或者如果您提供了一个目录名作为复制位置的答案。。。如果我有时间,我会寻找一个更好的解决方案……好的,我已经解决了,它甚至更简单。效果很好,尝试了几个案例。默认情况下,EMACS应该以这种方式工作。感谢您通过评估建议defun并使用dired do copy“C”对测试进行了测试,它出现了以下错误消息。将
c:/Users/family/AppData/Roaming/temp.emacs'复制到
c:/Users/family/AppData/Roaming/temp110/temp.txt'失败:(复制文件时出错,没有这样的文件或目录c:/Users/family/AppData/Roaming/temp.emacs c:/Users/family/AppData/Roaming/temp110/temp.txt)我在windows和dired+下使用emacs 24.2,这可能会重新定义dired do copy。有什么建议吗?它不考虑这个案子。我的代码所做的是创建目录,如果有多个文件要复制或移动,或者如果您提供了一个目录名作为复制位置的答案。。。如果我有时间,我会寻找一个更好的解决方案……好的,我已经解决了,它甚至更简单。效果很好,尝试了几个案例。默认情况下,EMACS应该以这种方式工作。谢谢你,迈克