Next: , Up: Auto Save


12.5.1 自動保存ファイル

自動保存は、通常、訪問先のファイルそのものへは保存しません。 というのは、予定の半分を変更しただけでプログラムにまだ一貫性がないのに 保存してしまうのは望ましくないからです。 そのかわりに自動保存ファイルと呼ばれる別のファイルに自動保存し、 (C-x C-sなどで)明示的に保存するよう指示されたときだけ、 訪問先のファイルに保存します。

通常、自動保存ファイルの名前は、訪問先のファイルの名前の前後に ‘#’を付加したものです。 したがって、ファイルfoo.cを訪問したバッファは、 ファイル#foo.c#に自動保存されます。 ファイルを訪問していないほとんどのバッファは、 明示的に指定したときだけ自動保存されます。 それらのバッファの自動保存ファイルの名前は、 バッファ名のまえに‘#%’、あとに‘#’を付けたものになります。 たとえば、送信するメッセージを作成するバッファ‘*mail*’は、 #%*mail*#というファイルに自動保存されます。 自動保存ファイルの名前は、Emacsの一部(関数make-auto-save-file-nameauto-save-file-name-p)をプログラムし直さない限り、 この方法で作られます。 バッファの自動保存に使うファイル名は、 そのバッファで自動保存をオンにしたときに計算されます。

大きなバッファで相当量のテキストを削除したときには、 そのバッファの自動保存を一時的にやめます。 意図せずにテキストを削除してしまった場合には、 自動保存ファイルに削除してしまったテキストが残っているほうが、 自動保存ファイルとしてより役に立つからです。 こうなったあとで自動保存をふたたびオンにするには、 C-x C-sでバッファを保存するか、 C-u 1 M-x auto-saveを使います。

訪問先のファイルそのものに自動保存を行いたい場合には、 変数auto-save-visited-file-namenil以外の値を設定します。 こうすると、自動保存と明示的な保存には、何の違いもありません。

訪問先のファイルにバッファを保存すると、 バッファの自動保存ファイルは削除されます。 これを禁止するには、 変数delete-auto-save-filesnilを設定します。 C-x C-wset-visited-file-nameで 訪問先ファイル名を変更すると、 新たな訪問先ファイル名に合わせて自動保存ファイルも改名されます。