Previous: , Up: Backups and Auto-Saving   [Contents][Index]


25.3 Reverting

あるファイルにたいして大きな変更を行った後、気が変わって元に戻したくなった場合は、revert-bufferコマンドでそのファイルの以前のバージョンを読み込むことにより、それらの変更を取り消すことができます。詳細は、Reverting a Buffer in The GNU Emacs Manualを参照してください。

Command: revert-buffer &optional ignore-auto noconfirm preserve-modes

このコマンドは、バージョンのテキストを、ディスク上のvisitされているファイルのテキストで置き換える。これにより、ファイルがvisit、または保存された以降に行ったすべての変更は、アンドゥ(undo: 取り消し)される。

デフォルトでは、もっとも最近のauto-saveファイルのほうがvisitされているファイルより新しく、かつ引数ignore-autonilの場合、revert-bufferはユーザーにたいしてかわりにauto-saveファイルを使用するかどうか確認を求める。このコマンドをinteractiveに呼び出したとき、プレフィックス数引数が指定されていなければ、ignore-autotとなる。つまり、interactive呼び出しは、デフォルトではauto-saveファイルのチェックを行わない。

revert-bufferは通常、バッファーを変更する前に確認を求める。しかし、引数noconfirmが非nilの場合、revert-bufferは確認を求めない。

このコマンドは通常、normal-modeを使用することにより、そのバッファーのメジャーモードとマイナーモードを再初期化する。しかし、preserve-modesが非nilの場合、モードは変更されずに残る。

リバート(revert: 戻す、復元する)は、insert-file-contentsの置き換え機能を使用することにより、バッファー内のマーカー位置の保持を試みる。バッファーのコンテンツとファイルのコンテンツがリバート操作を行う前に等しい場合、リバートはすべてのマーカーを保持する。等しくない場合、リバートによりバッファーは変更される。この場合は、(もしあれば)バッファーの最初と最後にある未変更のテキスト内にあるマーカーは保持される。他のマーカーを保持しても、それらは正しくないだろう。

Variable: revert-buffer-in-progress-p

revert-bufferは処理を行っている間、この変数を非nil値にバインドする。

このセクションの残りの部分で説明する変数をセットすることにより、revert-bufferが処理を行う方法をカスタマイズできます。

User Option: revert-without-query

この変数は、問い合わせなしでリバートされるべきファイルのリストを保持する。値は、正規表現のリスト。visitされているファイルの名前がこれらの正規表現のいずれかにマッチし、かつバッファーが未変更だがディスク上のファイルは変更されている場合、revert-bufferはユーザーに確認を求めることなく、ファイルをリバートする。

メジャーモードのいくつかは、以下の変数をローカルにバインドすることにより、revert-bufferをカスタマイズします:

Variable: revert-buffer-function

この変数の値は、そのバッファーをリバートするために使用する関数である。これはリバート処理を行うための、2つのオプション引数をとる関数であること。2つのオプション引数ignore-autonoconfirmは、revert-bufferが受け取る引数である。

Diredモードのような、編集されるテキストにファイルのコンテンツは含まれず、他の方式により再生成され得るモードは、この変数のバッファーローカル値に、コンテンツを再生成する特別な関数を与えることができる。

Variable: revert-buffer-insert-file-contents-function

この変数の値は、そのバッファーをリバートする際に、更新されたコンテンツの挿入に使用される関数を指定する。その関数は、2つの引数をとる。1つ目は使用するファイル名で、2つ目がtならユーザーはauto-saveファイルの読み込みにたいして確認を求められる。

revert-buffer-functionのかわりにこの変数をモードが変更する理由は、revert-bufferが行残りの処理(ユーザーへの確認、アンドゥリストのクリアー、適切なメジャーモードの決定、以下のフックの実行)にたいする重複や置き換えを避けるためである。

Variable: before-revert-hook

このノーマルフックは、変更されたコンテンツを挿入する前に、デフォルトのrevert-buffer-functionにより実行される。カスタマイズしたrevert-buffer-functionは、このフックを実行するかどうか判らない。

Variable: after-revert-hook

このノーマルフックは、変更されたコンテンツを挿入した後に、デフォルトのrevert-buffer-functionにより実行される。カスタマイズしたrevert-buffer-functionは、このフックを実行するかどうか判らない。

Variable: buffer-stale-function

この変数の値は、バッファーがリバートを要するかどうかをチェックするために呼び出される関数を指定する。デフォルト値は、修正時刻をチェックすることにより、ファイルをvisitするバッファーだけを処理する。ファイルをvisitしないバッファーには、カスタム関数が必要になる ((emacs)Supporting additional buffersを参照)。