如何阻止Emacs生成.#开头的临时文件?(Spacemacs+ClojureScript开发场景)
.#临时文件干扰Boot构建的问题 我来帮你搞定这个烦人的问题!那些.#开头的临时文件是Emacs的自动保存文件——它本来是好心帮你实时备份编辑内容,防止意外崩溃丢代码,但确实会搅乱Boot的文件监听机制,导致它时不时崩溃。下面给你几个实用的解决办法,按需选就行:
全局禁用自动保存(简单但有风险)
如果你能接受失去自动保存的保护(比如习惯手动保存,或者不怕Emacs崩溃丢代码),可以在Spacemacs的配置文件~/.spacemacs里添加这段配置:(setq auto-save-default nil)注意:这么做会关闭所有文件的自动保存,万一Emacs意外退出,你没手动保存的内容就没了,所以不太推荐长期用。
把自动保存文件统一移到临时目录(推荐)
这个方法既能保留自动保存的安全保障,又不让临时文件出现在项目目录里干扰Boot。同样在~/.spacemacs里添加:(setq auto-save-file-name-transforms `((".*" ,temporary-file-directory t)))这样所有
.#开头的临时文件都会被放到系统默认的临时目录(比如Linux的/tmp、macOS的/private/tmp),Boot根本不会监听这些目录,自然就不会崩溃了。仅针对ClojureScript模式禁用自动保存
如果你只想在编辑.cljs文件时关闭自动保存,其他文件保留自动保存功能,可以添加这段配置:(add-hook 'clojurescript-mode-hook (lambda () (setq-local auto-save-default nil)))它会在你打开ClojureScript文件时自动关闭当前缓冲区的自动保存,其他模式不受影响。
额外处理备份文件(可选)
除了.#开头的自动保存文件,Emacs还会生成~结尾的备份文件,如果Boot也监听这类文件,你可以把备份文件也移到临时目录:(setq backup-directory-alist `((".*" . ,temporary-file-directory))) (setq backup-by-copying t) ; 避免硬链接引发的问题
修改完配置后,重启Spacemacs或者按下SPC f e R(Spacemacs重新加载配置的快捷键),设置就会生效了。
内容的提问来源于stack exchange,提问作者Witek

