如何配置Emacs来保存temp目录下的文件备份?

时间:2014-04-01 01:15:27

标签: emacs configuration backup

我使用emacsclient来编辑很多/ tmp中的临时文件,并且想像我们对其他文件一样自动创建我的文件的备份副本。我确信有办法做到 - 但是怎么样? :)

(我搜索了Emacs手册,emacswiki和SO,但找不到任何有用的东西)

2 个答案:

答案 0 :(得分:3)

查看normal-backup-enable-predicate函数,这是backup-enable-predicate变量的默认值。

由于默认功能的唯一目的是禁止在各种临时目录中备份文件,您可能只想设置一个无条件返回t的替换。

(setq backup-enable-predicate (lambda (name) t))

files.el中的用法向我建议您也可以将此变量设置为nil。文档中没有说明这一点,因此它可能不可靠,但该变量未被Emacs中的任何其他库引用,因此可能正常(但是我仍然建议使用lambda,因为它更明显地做了什么。

另见 C-h i g (elisp) Making Backups RET

n.b。我实际上并不熟悉small-temporary-file-directory(请参阅该变量的文档字符串),但temporary-file-directory值通常为/tmp/,因此这两种情况通常是相同的。< / p>

如果您确实希望保留某些临时目录的默认行为而不保留其他临时目录,则应定义原始函数的修改副本:(defun my-backup-enable-predicate ...)然后(setq backup-enable-predicate 'my-backup-enable-predicate)

答案 1 :(得分:0)

坚持使用.emacs文件:

;; create an invisible backup directory so our directories 
;; look a bit cleaner
;; thanks to #emacs in irc.freenode.org, Ryan Barrett of snarfed.org
;; and freethegnu.wordpress.com
 (defun make-backup-file-name (filename)
 (defvar backups-dir "/tmp/")
 (make-directory backups-dir t)
 (expand-file-name
 (concat backups-dir (file-name-nondirectory filename) "~")
 (file-name-directory filename)))