自動保存は通常、閲覧したファイルには保存されません。意図しない変更を永続化させてしまうことは、非常に好ましくないためです。代わりに、自動保存は自動保存ファイルと呼ばれる別のファイルに対して行われ、閲覧したファイルが変更されるのは、明示的に保存を要求した場合(C-x C-sなど)に限られます。
通常、自動保存ファイル名は、参照先ファイル名の前後に ‘#’
を付加して作成されます。したがって、バッファ参照ファイル foo.c は、ファイル #foo.c#
に自動保存されます。参照ファイルではないほとんどのバッファは、明示的に要求した場合にのみ自動保存されます。自動保存される際は、バッファ名の前後に
‘#’
を付加し、最後に一意性を確保するための数字と英字を加えることで自動保存ファイル名が作成されます。例えば、送信するメッセージを作成する *mail* バッファは、#*mail*#704juu
という名前のファイルに自動保存される場合があります。Emacs の一部を別の動作に再設定(関数 make-auto-save-file-name および auto-save-file-name-p)しない限り、自動保存ファイル名はこの方法で作成されます。バッファで自動保存を有効にすると、そのバッファで使用する自動保存ファイル名が算出されます。
変数 auto-save-file-name-transforms
を使用すると、自動保存ファイル名をある程度制御できます。一連の正規表現と置換指定を行うことで、自動保存ファイル名を変換することが可能です。デフォルト値では、リモートファイル(リモートファイル
を参照)の自動保存ファイルが、ローカルマシンの一時ファイルディレクトリに保存されます。
大容量バッファ内のテキストの相当部分を削除すると、そのバッファでは自動保存が一時的に無効になります。これは、意図せずテキストを削除してしまった場合、自動保存ファイルに削除済みのテキストが含まれていた方が有用であるためです。このような状態から自動保存を再度有効にするには、C-x C-s でバッファを保存するか、C-u 1 M-x auto-save-mode を使用してください。
自動保存を別途の自動保存ファイルではなく、閲覧中のファイルで行うには、グローバルマイナーモード auto-save-visited-mode
を有効にしてください。このモードでは、自動保存は明示的な保存と同一の動作になります。なお、このモードは前述の auto-save モードとは独立しており、両方を同時に有効にすることも可能です。ただし、あるバッファで
auto-save モードが有効になっており、かつ廃止された auto-save-visited-file-name 変数に nil 以外の値が設定されている場合、そのバッファは auto-save-visited-mode の影響を受けません。
変数 auto-save-visited-interval を使用すると、auto-save-visited-mode
における自動保存処理の間隔をカスタマイズできます。デフォルトは5秒です。auto-save-interval および auto-save-timeout は auto-save-visited-mode に影響しません。これらの変数の詳細については、自動保存の制御 を参照してください。
バッファをビジットファイルに保存すると、そのバッファの自動保存ファイルは削除されます。(変数 delete-auto-save-files に nil
を設定することで、この動作を抑制できます。)C-x C-w または set-visited-file-name
でビジットファイル名を変更すると、すべての自動保存ファイルが新しいビジットファイル名に合わせてリネームされます。
バッファを終了しても、デフォルトではそのバッファの自動保存ファイルは削除されません。kill-buffer-delete-auto-save-files が nil 以外の場合、自動保存ファイルを持つバッファを終了すると、Emacs
は自動保存ファイルを削除するかどうかをユーザーに確認します。(delete-auto-save-files が nil
の場合は、この動作は抑制されます。)