2010-10-08 61 views
2

我愛emacs,但有些事情一直在嘮叨我。當我通過tramp編輯文件時,我似乎無法讓emacs存儲文件的本地備份。設置Emacs流浪漢來存儲本地備份

當前,當我編輯本地文件時,一組舊版本存儲在/ tmp/myusername/emacs_backup文件夾中。但是,當我通過tramp進行FTP時,舊版本不存儲在那裏(我假設它試圖遠程存儲它們)。

這裏是我的.emacs設置:

(defvar user-temporary-file-directory 
    (concat "/tmp/" user-login-name "/emacs_backup/")) 
(make-directory user-temporary-file-directory t) 
(setq make-backup-files t) 
(setq backup-by-copying t) 
(setq version-control t) 
(setq delete-old-versions t) 
(setq kept-new-versions 10) 
(setq backup-directory-alist `(("." . ,user-temporary-file-directory))) 
(setq tramp-backup-directory-alist backup-directory-alist) 
(setq tramp-auto-save-directory user-temporary-file-directory) 
(setq auto-save-list-file-prefix 
     (concat user-temporary-file-directory ".auto-saves-")) 
(setq auto-save-file-name-transforms 
     `((".*" ,user-temporary-file-directory t))) 

我不在乎,如果流浪漢蘇編輯也存儲在tmp文件夾 - 越多越好在我看來。任何幫助是極大的讚賞!

回答

3

tramp-backup-directory-alist文檔說

(setq流浪漢備份目錄ALIST備份目錄ALIST)

給出了他們的主人爲流浪漢文件相同的備份策略像本地政策文件。

我將解釋爲備份遠程計算機上的tramp文件(「他們的主機」)。查看tramp.el中的實現,這也是默認實現(如果沒有設置tramp-backup-directory-alist,則backup-directory-alist是)。

流言假定遠程文件的備份應該始終也是遠程的,並且在進行備份之前顯式地預先設置方法/用戶/主機位。如果你想改變行爲,我想你必須建議tramp-handle-find-backup-file-name調整文件名(所以它是一個有效的本地文件名),並與backup-directory-alist中的條目進行協調。

FWIW:將備份放入臨時文件目錄從長遠來看不會有太大的幫助。 「臨時」類型背離了備份的目的。

1

我能找到一個解決方法(我試圖通過tramp-backup-directory-alist設置它 - 但顯然有一個tramp的本地保存遠程緩衝區的能力)。我沒有使用內置備份,而是找到了由Benjamin Rutt編寫的名爲backup-each-save.el的elisp腳本。

0

重新定義trump-handle-find-backup-file-name適合我。它擺脫了想要將備份保存在遠程服務器上的行爲。

(defun tramp-handle-find-backup-file-name (filename) 
     "Like `find-backup-file-name' for Tramp files." 
     (with-parsed-tramp-file-name filename nil 
     (tramp-run-real-handler 'find-backup-file-name (list filename)))) 
0

我也試圖在本地存儲備份。我提交了bug,因爲我認爲tramp-backup-directory-alist已損壞。在與Michael Albinus交談之後,我發現我誤解了tramp-backup-directory-alist,這是一種存儲遠程文件遠程備份的方式,我應該這樣做:

(add-to-list 'backup-directory-alist 
      (cons tramp-file-name-regexp "/my/local/backup/"))