ファイルにアクセスするたびに、変数 auto-save-default が nil 以外であれば、そのファイルのバッファで自動保存が有効になります(ただし、バッチモード時は除きます。初期オプションを参照してください)。この変数のデフォルト値は
t
であるため、ファイルアクセス用バッファでは通常、自動保存が利用されます。現在のバッファで自動保存の有効・無効を切り替えるには、M-x auto-save-mode
と入力してください。自動保存モードは、バッファローカルなマイナーモードとして機能します(マイナーモードを参照してください)。
Emacsは、前回の自動保存以降に入力した文字数に基づいて、定期的に自動保存を行います。変数 auto-save-interval
は、自動保存の間隔となる文字数を指定します。デフォルト値は300です。Emacsは小さすぎる値を受け付けません。auto-save-interval
を20未満の値にカスタマイズした場合、Emacsはその値が20であるかのように動作します。
しばらく入力を停止した際にも、自動保存が行われます。デフォルトでは、30秒間操作がなかった時点で保存されます(このとき、Emacsはガベージコレクションを実行することもあります。詳細はThe Emacs Lisp Reference ManualのGarbage
Collectionを参照してください)。この間隔を変更するには、変数 auto-save-timeout
をカスタマイズしてください。現在のバッファが長い場合、実際の所要時間は長くなります。これは、自動保存にかなりの時間を要する長いバッファを編集している際に、作業の妨げにならないようにするためのヒューリスティックです。操作停止中の自動保存には2つの目的があります。第一に、しばらくターミナルから離れた場合でも、すべての作業内容が確実に保存されるようにすることです。第二に、実際に入力している最中の自動保存を回避できる可能性があることです。
auto-save-visited-mode を有効にすると、Emacs は 5
秒間操作がない状態でファイル閲覧バッファを自動保存します。変数 auto-save-visited-interval をカスタマイズすることで、この無操作時間を変更できます。
Emacsはまた、致命的なエラーが発生するたびに自動保存を行います。これには、‘kill %emacs’のようなシェルコマンドでEmacsのジョブを強制終了させたり、電話回線やネットワーク接続を切断したりすることが含まれます。
M-x do-auto-save コマンドで、明示的に自動保存を行うことができます。