Next: , Previous: , Up: ファイルの処理   [Contents][Index]


18.5 自動リバートーバッファーを自動的に最新に保つ

visit中のファイルを別プログラムが変更した場合には、バッファーがvisit中のファイルと同期しなくなる可能性があります。これを最新に保つために、M-x auto-revert-modeをタイプしてAuto Revertモードを有効にできます。これはvisit中のファイルがディスク上で変更された際に、バッファーを自動的にリバートします。すべてのファイルバッファーで同じことを行うには、M-x global-auto-revert-modeをタイプしてGlobal Auto Revertモードを有効にします。

Auto Revertはバッファーに未保存の変更があったり、ディスク上のファイルが削除やリネームされた場合にはバッファーをリバートしません。

Auto Revertモードの1つの使い方は、システムログのようなファイルを“tail”することです。これにより、それらのファイルにたいする、他のプログラムによる変更を、継続的に表示できます。これを行うには、ポイントをバッファーの最後に移動します。そうすればファイル内容が変更されても、ポイントはその位置に留まります。しかし、ファイルがファイルの終端方向に向かって変更されるだけだと確信できるときは、かわりにAuto Revert Tailモード(auto-revert-tail-mode)を使います。このモードは、これをより効果的に行います。Auto Revert Tailモードは、リモートのファイルにたいしても機能します。

バッファーが自動リバートされたとき、メッセージが生成されます。これはauto-revert-verboseを非nilにセットすることにより、抑制できます。

Auto Revertモードはリモートファイルのチェックやリバートは、通常は低速なので行いません。この挙動は変数auto-revert-remote-filesを非nilにセットして変更できます。

デフォルトでは、Auto Revertモードはファイル通知(file notifications)を使用して機能します。これにより、ファイルシステムへの変更が、OSからEmacsに報告されます。変数auto-revert-use-notifynilにカスタマイズして、ファイル通知を無効にできます。その場合、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 (ディレクトリーエディター)を参照)では、Auto Revertモードはそのバッファーのディレクトリーでファイルが作成、または削除されたとき更新を行います。

バージョンコントロールシステムの下にあるファイルを、以前のバージョンにリバーとするコマンドについては、バージョンコントロール操作のアンドゥを参照してください。バージョンコントロールシステムの下にあるファイルをvisitしているときの自動リバートの特性については、バージョンコントロールとモードラインを参照してください。