2011-08-02 19 views
3

我經常刪除不應該的文件,而最糟糕的是我自己寫的文件。因此我多次被Emacs的備份功能保存。我每次保存時如何進行Emacs備份?

但我的問題是,Emacs只在第一次保存緩衝區時進行備份。每次按C-x C-s時,有沒有辦法讓Emacs做到這一點?

這是我的.emacs看起來像目前(僅與備份交易的一部分):

*剪斷*

;; =====備份=====

;;啓用備份文件。
(setq make-backup-files t)

;;將所有備份文件保存在此目錄中。
(setq備份目錄ALIST(報價(( 「*」, 「〜/ .emacs_backups /」))))

;;通過複製總是備份(最安全的,但最慢)
(setq備份逐複製噸)

;;追加。〜1〜(和越來越多的),以結束文件的保存備份時
(setq版本控制噸)

;;定義文件的多少舊版本,以保持(從
;;最近開始落後
(setq保持全新版本100)

*計數剪斷*

+1

剛剛發現這.. http://www.emacswiki.org/emacs/ForceBackups – dala

+1

而這.. http://www.emacswiki.org/emacs/BackupEachSave – dala

+1

這解決了一個問題,我從來沒有意識到,直到我我讀了這個問題。很酷的東西,謝謝:D –

回答

5

看完這個:EmacsWiki: Force Backups

我添加了這些行我的.emacs:

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

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

它採用標準的備份/版本控制,但重置表示羯羊或沒有緩衝器具有標誌在保存之前已備份此會話。

前兩行定義了一個函數,用於重置指示在此會話期間是否備份緩衝區的標誌。

最後一行增加了一個事件掛鉤,它在保存之前執行該功能。

這正是我想要的。

2

如果你想要做的它在你自己的,這裏是一個開始:

(defun backup-and-save() 
    (interactive) 
    (setq filename (buffer-file-name)) 
    (write-file (concat filename (format-time-string "_" "%Y%m%d%H%M%S"))) 
    (write-file filename) 
) 

它與時間戳連接保存副本作爲originalfilename_timestamp

你可能當然調整它以將其存儲在單獨的備份文件夾中或添加其他「調整」。

相關問題