2012-01-04 56 views
0

我试图在保存后和保存挂钩的帮助下创建文件的备份。这是一个来自.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

检查文档backup-buffer,这点你到make-backup-files变量:vmake-backup-filesRET

默认情况下,Emacs的被保存之前重命名原来的文件备份到备份文件名备份缓冲到原始文件名;因此你的文件消失了。

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

+0

是的,明白了..(setq backup-by-copy t)这个设置使它按我想要的方式工作。谢谢! – Prafulla 2012-01-04 04:00:56

+0

您可能希望在代码中使用'(let(备份 - 备份))(备份缓冲区)),以便它可以工作,而不管这个变量的全局设置如何。 – phils 2012-01-04 04:11:42