每次保存时如何进行Emacs备份?

dal*_*ala 5 emacs backup

我不时删除不应该的文件,最糟糕的是我自己写的文件.因此,我有很多次被Emacs的备份功能保存.

但我的问题是Emacs只在你第一次保存缓冲区时进行备份.有没有办法让Emacs每次按下Cx Cs时都这样做?

这就是我的.emacs目前的样子(只有处理备份的部分):

*剪*

;; =====备份=====

;; 启用备份文件.
(setq make-backup-files t)

;; 将所有备份文件保存在此目录中.
(setq backup-directory-alist(quote((".*"."〜/ .emacs_backups /"))))

;; 始终通过复制备份(最安全,但最慢)
(setq备份复制t)

;; 保存备份时附加.~1~(和递增数字)到文件末尾
(setq version-control t)

;; 定义要保留的文件的旧版本
数量
(从;;最近和向后计数(setq keep-new-versions 100)开始

*剪*

dal*_*ala 7

阅读本文后:EmacsWiki:强制备份

我将这些行添加到我的.emacs中:

(defun force-backup-of-buffer ()
  (setq buffer-backed-up nil))

(add-hook 'before-save-hook  'force-backup-of-buffer)
Run Code Online (Sandbox Code Playgroud)

它使用标准备份/版本控制,但在保存之前重置指示缓冲区已在此会话中备份的标志.

前两行定义了一个函数,该函数重置标志,指​​示在此会话期间缓冲区是否已备份.

最后一行添加一个事件挂钩,在保存之前执行该函数.

这正是我想要的.