Next: , Up: Auto Save   [Contents][Index]


18.6.1 自動保存ファイル

自動保存は通常、visitしているファイルへの保存はしません。なぜなら永続化したくない変更を保存するのは、好ましくないからです。そのかわりに、自動保存はauto-saveファイルと呼ばれる別のファイルに保存し、visitしているファイルへの変更は、保存を明示的に要求したとき(C-x C-sなど)に行います。

auto-saveファイルの名前は通常、visitしているファイル名の前後に‘#’をつけて作られます。したがってfoo.cというファイルをvisitしているバッファーは、#foo.c#というファイルに自動保存されます。ファイルをvisitしていないバッファーのほとんどは、明示的に要求した場合だけ自動保存されます。それらのバッファーが自動保存されるとき、auto-saveファイル名は、バッファー名の前後に‘#’をつけて、その後ろに数字と文字を付け加えて一意な名前にします。たとえば送信メッセージを作成する*mail*バッファーは、#*mail*#704juuのような名前のファイルに、自動保存されます。Emacsの一部(関数make-auto-save-file-nameおよびauto-save-file-name-p)を違った方法で再プログラムしない限り、auto-saveファイル名はこの方法で作成されますバッファーの自動保存に使われるファイル名は、そのバッファーの自動保存をオンにしたときに計算されます。

変数auto-save-file-name-transformsは、auto-saveファイル名をある程度制御することを許します。これに一連の正規表現を指定して置換することにより、auto-saveファイル名を変更します。デフォルト値は、リモートのファイル(Remote Filesを参照してください)を、ローカルマシンの一時ディレクトリーのauto-saveファイルに変換します。

大きなバッファーから大量のテキストを削除したとき、そのバッファーにたいする自動保存は一時的にオフになります。これは、もしテキストをうっかり削除してしまった場合、それがauto-saveファイルに含まれていて、そこから探せる方が便利だからです。これが発生した後、再び自動保存を有効にするには、バッファーをC-x C-sで保存するか、C-u 1 M-x auto-save-modeを使います。

別のauto-saveファイルにするのではなく、visitしているファイルに自動保存したいときは、変数auto-save-visited-file-nameを非nil値にセットします。このモードでは、自動保存と明示的な保存に実際の違いはありません。

バッファーのauto-saveファイルは、そのバッファーをvisitしているファイルに保存したとき削除されます(変数delete-auto-save-filesnilにセットすることにより、これを禁じることができます)。C-x C-wまたはset-visited-file-nameで、visitされているファイル名を変更することにより、あたらしくvisitされているファイル名にもとづいてauto-saveファイル名はリネームされます。