在保存后挂钩中调用备份缓冲区会删除原始文件

时间:2012-01-04 00:14:16

标签: emacs

我试图在保存挂钩的帮助下为文件保存后和保存之前创建备份。这是来自.emacs

的代码
(defun force-backup-of-buffer ()                                                                                                                                                                              
    (interactive)                                                                                                                                                                                             
    (setq buffer-backed-up nil)                                                                                                                                                                               
    (backup-buffer)                                                                                                                                                                                           
)                                                                                                                                                                                                             

(add-hook 'before-save-hook  'force-backup-of-buffer)                                                                                                                                                         
 (add-hook 'after-save-hook  'force-backup-of-buffer) 

但这导致删除原始文件。有人能告诉我为什么会这样吗? 我的目标是每次保存时创建两个备份文件。我想使用emacs使用的相同版本控制号。因此我使用备份缓冲区而不是写自己的钩子来写文件。

1 个答案:

答案 0 :(得分:1)

查看backup-buffer的文档,其中指向make-backup-files变量: Ch v make-backup-files RET

默认情况下,Emacs通过将原始文件重命名为备份文件名进行备份,然后将缓冲区保存为原始文件名;因此你的文件正在消失。

我不确定backup-buffer是否真的打算在其他地方调用,但是如果你通过复制将其设置为备份,你可能会没事。