为什么emacs会为修改后的文件创建临时符号链接?

时间:2011-04-21 00:28:36

标签: emacs

当我修改缓冲区时,Emacs会自动在与正在编辑的文件相同的目录中创建一个临时符号链接(例如foo.c):

.#foo.c -> user@host.12345:1296583136

其中'12345'是Emacs的PID(我不知道最后一个数字是什么意思)。

为什么Emacs会创建这些链接,我该如何阻止它这样做呢?

请注意,我已关闭自动保存模式(M-x auto-save-mode)并禁用了备份文件(M-x set-variable -> make-backup-files -> nil)。当我保存修改后的缓冲区或撤消对它的更改时,符号链接就会消失。

特别是,我试图阻止Emacs创建这些链接,因为它们导致目录时间戳被修改,这导致我们的构建系统重建整个模块而不是编译和链接一个已更改的文件:/

感谢您的任何意见!


更新:为了防止Emacs永久创建互锁文件,您可以更改src/filelock.c并构建自定义二进制文件:

void
lock_file (fn)
     Lisp_Object fn;
{
     return;
     // Unused code below...
}

更新2:Arne的回答是正确的。现在可以在最新的Emacs(24.3.1)中禁用锁定文件,方法是将其添加到.emacs文件中:

(setq create-lockfiles nil)

2 个答案:

答案 0 :(得分:60)

更新:Emacs 24.3已发布,完全支持此新设置!

在emacs的当前主干中,您只需自定义变量create-lockfiles:

C-h v create-lockfiles

文档: 非零意味着使用锁定文件来避免编辑冲突。

在您的init文件中,您可以设置

(setq create-lockfiles nil)

通过

获取
bzr branch bzr://bzr.savannah.gnu.org/emacs/trunk emacs-trunk
make
src/emacs

(我发现了这个,因为我决定变得活跃,只是添加一个像我一样的选项...... :))

答案 1 :(得分:34)

符号链接是emacs的文件互锁系统:符号链接表示emacs的实例正在编辑此文件。如果另一个实例尝试编辑同一文件,emacs将发出警告。见http://www.gnu.org/software/emacs/manual/html_node/emacs/Interlocking.html

这与自动保存无关。

我找不到如何在emacs中修改或禁用文件锁定。