我经常使用emacsclient编辑/tmp中的临时文件,并希望像其他文件一样自动创建备份副本。我相信有方法可以做到这一点,但具体如何操作呢? :)
(我已经搜索了Emacs手册、emacswiki和SO,但没有找到有用的信息)
(我已经搜索了Emacs手册、emacswiki和SO,但没有找到有用的信息)
看一下normal-backup-enable-predicate
函数,它是backup-enable-predicate
变量的默认值。
由于默认函数的唯一目的是阻止在各种临时目录中备份文件,因此您可能只想设置一个替换函数,该函数无条件返回t
。
(setq backup-enable-predicate (lambda (name) t))
在 files.el 中的使用让我想到你也可以将这个变量设置为 nil
。虽然文档没有说明,所以可能不太可靠,但是 Emacs 中没有其他库引用该变量,所以它 可能 没问题(但我仍然建议使用 lambda,因为那样更容易理解)。
另请参见 C-hig (elisp) Making Backups
RET
注意,我并不熟悉 small-temporary-file-directory
(请参阅该变量的文档字符串),但是 temporary-file-directory
的值通常为 /tmp/
,因此这两种情况通常是相同的。
如果您确实想要保留某些临时目录的默认行为而不保留其他目录的默认行为,则应定义原始函数的修改副本:(defun my-backup-enable-predicate ...)
然后 (setq backup-enable-predicate 'my-backup-enable-predicate)
;; 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)))
(setq backup-directory-alist '(("." . "~/.backup")))
,但请阅读各种答案以了解如何控制Emacs生成备份文件的方式,因为这不太可能是您想要配置的唯一选项。 - phils