ディスク上の参照ファイルが別のプログラムによって変更されると、バッファがそのファイルと同期しなくなることがあります。最新の状態に保つには、M-x auto-revert-mode と入力してオートリバートモードを有効にできます。これにより、ディスク上の参照ファイルが変更された際に、バッファが自動的に元に戻ります。すべてのファイルバッファに対して同様の処理を行うには、M-x global-auto-revert-mode と入力してグローバルオートリバートモードを有効にしてください。
Auto Revertは、未保存の変更がある場合や、ディスク上のファイルが削除または名前変更された場合には、バッファを復元しません。
Auto
Revertモードの用途の一つに、システムログなどのファイルを「テール」し、他のプログラムによってそのファイルに加えられた変更を継続的に表示させるというものがあります。これを行うには、ポイントをバッファの末尾に移動させるだけで、ファイルの内容が変更されてもポイントはそこに留まります。ただし、ファイルが末尾に追記されるだけで変更されないことが確実な場合は、代わりにAuto
Revert Tailモード(auto-revert-tail-mode)を使用してください。こちらの方が効率的です。Auto Revert
Tailモードはリモートファイルでも動作します。
バッファが自動リバートされると、メッセージが生成されます。これは auto-revert-verbose を nil
に設定することで抑制できます。
Auto Revertモードでは、リモートファイルのチェックや復元は行われません。通常、処理速度が遅すぎるためです。この動作は、変数 auto-revert-remote-files を nil
以外に設定することで変更できます。
デフォルトでは、Auto Revertモードはファイル通知を利用して動作します。これにより、ファイルシステムの変更がOSからEmacsに報告されます。変数auto-revert-use-notifyをnilの値にカスタマイズすることでファイル通知の使用を無効にでき、その場合、Emacsは5秒ごとにポーリングを行ってファイルの変更を確認します。ポーリング間隔は変数auto-revert-intervalで変更可能です。
すべてのシステムがファイル通知に対応しているわけではありません。対応していない場合は、デフォルトで auto-revert-use-notify が nil
となります。
デフォルトでは、ファイル通知を使用している場合でも、Auto
Revertモードは定期的にファイルの変更をポーリングします。多くの場合、ポーリングは不要であり、これを無効にして通知のみを利用することで消費電力を抑えられる可能性があります。そのためには、変数
auto-revert-avoid-polling を nil
以外に設定してください。ただし、特定のファイルシステムでは通知が機能しません。主にUnix系マシンのネットワークファイルシステムで、他のマシンからファイルが変更される可能性がある場合などが該当します。このようなファイルシステムでは、ポーリングが必要になる場合があります。auto-revert-avoid-polling が nil 以外である場合に強制的にポーリングを行うには、auto-revert-notify-exclude-dir-regexp
を通知の対象外とするファイルに合わせて設定してください。
Diredバッファ(Dired, the Directory Editorを参照)では、Auto Revertモードにより、バッファのディレクトリ内でファイルが作成または削除された際にバッファが更新されます。
バージョン管理下のファイルを以前のバージョンに戻すためのコマンドについては、バージョン管理操作の取り消しを参照してください。バージョン管理下のファイルを開いた際のAuto Revertの特有の挙動については、バージョン管理とモードラインを参照してください。