我使用emacsclient很多地编辑/ tmp中的临时文件,并希望自动创建我的文件的备份副本,就像我们对其他文件所做的那样。我确信有一种方法可以做到 - 但是怎么做? :)如何配置Emacs以在临时目录下保存文件的备份?
(我搜索了Emacs手册,emacswiki和SO但找不到任何有用的)
我使用emacsclient很多地编辑/ tmp中的临时文件,并希望自动创建我的文件的备份副本,就像我们对其他文件所做的那样。我确信有一种方法可以做到 - 但是怎么做? :)如何配置Emacs以在临时目录下保存文件的备份?
(我搜索了Emacs手册,emacswiki和SO但找不到任何有用的)
看那normal-backup-enable-predicate
功能,是backup-enable-predicate
变量的默认值。
由于默认功能的唯一目的是禁止备份各种临时目录中的文件,因此您可能只需要设置无条件返回t
的替换。
(setq backup-enable-predicate (lambda (name) t))
files.el中的用法向我建议您也可以将此变量设置为nil
。这在文档中没有说明,所以它可能不可靠,但该变量没有被Emacs中的任何其他库引用,所以它的可能罚款(但我仍然建议使用lambda,因为它更明显是什么这是做)。
参见C-H我克(elisp) Making Backups
RET
N.B.我实际上并不熟悉small-temporary-file-directory
(请参阅该变量的文档字符串),但temporary-file-directory
值通常为/tmp/
,所以这两种情况通常是相同的。
如果你确实想保留默认的行为一些临时目录,但不是别人,你应该定义原函数的修改后的副本:(defun my-backup-enable-predicate ...)
,然后(setq backup-enable-predicate 'my-backup-enable-predicate)
棒这揭掉.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)))
如果备份保存到主目录将是很好就像“〜/ .backup”一样,即使在/ tmp中编辑也是如此(例如/tmp/tmp.1234)。 –
Lester Cheung:那会是'(setq backup-directory-alist'((“。”。“〜/ .backup”)))''但是请通读各种答案[如何控制Emacs如何制作备份文件?](http://stackoverflow.com/questions/151945/how-do-i-control-how-emacs-makes-backup-files),因为这不太可能是您想要配置的唯一选项。 – phils
感谢@phils是的,这就是我目前使用的。 –
我认为我们在这里有一个赢家。 Emacs手册实际上提到了'backup-enable-predicate' - 我不知何故错过了。 :(谢谢! –
如果临时文件目录中的文件在我退出emacsclient后立即删除了怎么办?在查杀缓冲区之前如何制作文件的副本? –
回答我自己的问题 - 似乎我需要“Cu Cu Cx Cs“http://www.gnu.org/software/emacs/manual/html_node/emacs/Backup.html –