我正在尝试让emacs的delete-file函数删除名称中带有感叹号的文件。
特殊的用例是,我设置emacs将所有备份文件保存在一个目录中,并删除旧的备份文件。但是,当所有备份文件都放在一个目录中时,目录分隔符/将替换为!。
当对名称中带有感叹号的文件调用delete-file时,它将返回零,并且不会删除该文件。它不会发出任何错误信号。通常,delete-file返回nil。无论如何,emacs的备份系统使用delete-file进行删除,我不希望仅仅为了更改一行而重新定义整个函数。
我尝试了反斜杠的感叹号和shell引号的文件名字符串,但都不起作用。我发现我的配置中有什么东西导致了这个问题,但我还没有弄清楚是什么原因。我已经将问题的根源追踪到我的自定义system-move-file-to-trash函数,现在我必须对其进行调试。
那么,我如何才能让它工作呢?
Emacs版本: GNU Emacs 23.1.50.1
emacs-快照:已安装: 1:20090730-1~jaunty1
发布于 2009-10-27 15:04:39
我找到了答案。我的自定义system-move-file-to-trash函数在文件名上不适当地调用了shell-quote-argument,删除文件将自动使用该函数。显然,使用call-process运行命令的参数不需要用外壳引用。
发布于 2009-10-27 13:39:00
M-x delete-file然后只需输入文件名,不要转义任何内容,只需输入文件名,
!home!blah!filename它就是这样工作的。lisp调用也是如此,
(delete-file "!home!blah!filename")https://stackoverflow.com/questions/1628908
复制相似问题