2012年11月11日日曜日

Emacsのバックアップファイルの保存先変更


Emacsでファイルを編集すると,バックアップファイル(<ファイル名>~) や 自動保存ファイル(#<ファイル名>#) が自動生成される.
MacでEmacsを使っていると,時たまEmacsが落ちるので,これらは重宝する.
これらがあれば,Emacsが不正終了して,保存できていなかったファイルでも,コマンド一つで編集途中の状態に復旧できるからだ
(M-x recover-this-file で復旧できます.)

しかし,これらのファイルの自動生成には,いくつか困ったことがあります.


  1. 編集しているとディレクトリと同じディレクトリに作成される

    このため,ディレクトリの中が散らかる



  2. Dropboxのディレクトリの中のファイルを編集すると,バックアップファイルまで同期される.





これらを解決するために,バックアップファイルの保存先ディレクトリを変更します.



ディレクトリの変更方法




まずはバックアップファイルの保存先ディレクトリを変更します.
~/.emacs/init.el に以下を追加します.




(setq backup-directory-alist
(cons (cons ".*" (expand-file-name "~/.emacs.d/backup"))
backup-directory-alist))






".*" は正規表現でバックアップファイルを生成するファイルを指定しています.
".*" は任意の文字列に一致する正規表現です.
ですので,任意のファイルに対して,バックアップを生成します.
(expand-file-name "~/.emacs.d/backup") の部分は,バックアップファイルの保存先ディレクトリを指定しています.
この例では, ~/.emacs.d/backup というディレクトリに保存することになります.

次に自動保存ファイルの保存先ディレクトリを変更します.



(setq auto-save-file-name-transforms
`((".*", (expand-file-name "~/.emacs.d/backup/") t)))





先の同様,".*" は自動保存ファイルを生成するファイルを正規表現で指定しています.
また, (expand-file-name "~/.emacs.d/backup") は自動保存ファイルの保存先ディレクトリを指定しています.

これで,<ファイル名>~ や #<ファイル名># でディレクトリが散らかったり,Dropboxの同期のポップアップを見て悲しい気持ちにならずに済む!(はず)







--
My Emacs Files At GitHub