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

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

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

其中“12345”是Emacs的PID(我不知道最后一个数字的含义)。

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

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

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

感谢您的任何意见!


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

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

更新2:阿恩的答案是正确的。 现在可以通过将这添加到您的.emacs文件来禁用最新的Emacs(24.3.1)中的锁文件:

(setq create-lockfiles nil)

更新: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

(我发现这件事,因为我决定积极行动,只是自己添加一个选项...... :))


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

这与自动保存无关。

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

链接地址: http://www.djcxy.com/p/38553.html

上一篇: Why does emacs create temporary symbolic links for modified files?

下一篇: emacs is not breaking hard links for hg