【发布时间】:2010-12-10 09:03:59
【问题描述】:
我正在尝试使 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
【问题讨论】:
-
尝试使用官方版本的 Emacs,也许问题出在这个中间版本。
-
对于阅读本文的任何人,问题是您不应该在传递给
call-process的字符串上调用shell-quote-argument。显然call-process绕过了外壳,所以外壳引用只会产生问题。