auto-save

概要

編集中状態の自動保存や、編集前や保存直後の状態のバックアップに関する設定をここでは書いている。

Emacs ではデフォルトでも編集中ファイルの自動保存や、編集前の状態の自動バックアップもしてくれるが開いているファイルとは違う場所に保存したりすることで、より便利になるのでいくつかの設定を入れている。

設定

自動保存設定

デフォルトだと #hoge.txt# みたいなファイル名で作られる、自動保存に関する設定。

まあこの自動保存されてやつを活用できてる気がしないのでこの自動保存自体不要な気はしているが、とりあえず場所を移動して邪魔にはならないようにはしている。

自動保存のタイミング

自動保存のタイミングは

  • auto-save-timeout
  • auto-save-interval

で制御されている。

まず auto-save-timeout で設定した秒数が経過すると再度自動保存が実行される。

これがデフォルトだと 30 秒なのだが、ちょっと長いのでその半分の 15 秒で保存されるように設定を変更している。

(setq auto-save-timeout 15)

また auto-save-interval で設定した回数のキーイベントが発生すると再度自動保存を実行する。

これもデフォルトだと 300 と結構なキーを叩く必要があるので 60 回としている。

(setq auto-save-interval 60)

自動保存先を変更する

自動保存はそのままだと弄ってるファイルの場所に作られる。が、これは以下のようにすると ~/.emacs.d/backup/ 一応変更可能。

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

ただ、デフォルト値が

(("\\`/[^/]*:\\([^/]*/\\)*\\([^/]*\\)\\'" "/tmp/\\2" t))

なので .* にしているのは乱暴そうな気がしている。

というわけで https://masutaka.net/chalow/2014-05-11-1.html に書かれているのを真似して

(("~/\\([^/]*/\\)*\\([^/]*\\)$" "~/.emacs.d/backup/\\2" t))

とでもした方が良いかもしれない。

バックアップファイル

自動保存とは別に、ファイルを開いた時点のバージョンや保存した時点のバージョンを取っておいてくれる自動バックアップ機能もあるのでその設定も弄っている。

バックアップ先のフォルダ指定

デフォルトでは編集しているファイルと同じフォルダにバックアップファイルを作成するようになっている。

だけど、こいつが結構邪魔なのでバックアップファイルは ~/.emacs.d/backup/ に全部保存するようにしている。

また、普段 tramp は使っていないが何かの拍子で使った時にバックアップが取られると邪魔そうなのでそれは保存しないようにしている。

(setq backup-directory-alist '((".*" . "~/.emacs.d/backup")
                               (,tramp-file-name-regexp . nil)))

バージョン管理

バックアップにはバージョン管理機能もある。が、標準では無効化されている。

とりあえず古いバージョンを引っ張り出せると便利かもと思って有効化している。

(setq version-control t)

が、実際それを使ったことはない。。。

また、古過ぎるバックアップファイルは要らないので、自動的に消されるように設定している。

(setq delete-old-versions t)

その他

Emacs の自動保存などについては http://yohshiy.blog.fc2.com/blog-entry-319.html によくまとめられているので、いずれその内容を設定に反映させたい。

また super-save というやつを使って実ファイルに自動保存したりしたらこれも不要になると思われる。