前: Auto-Saving, 上: Backups and Auto-Saving


25.3 復元

ファイルを大幅に変更したあとで、そのような変更をやめたい場合には、 コマンドrevert-bufferでファイルのまえの版を読み込めます。 See バッファを復元する

— コマンド: revert-buffer &optional ignore-auto noconfirm

このコマンドは、バッファのテキストを ディスク上の訪問しているファイルのテキストで置き換える。 これにより、ファイルを訪問したり保存してから行った変更をすべて取り消せる。

デフォルトでは、最後の自動保存ファイルが 訪問しているファイルよりも新しい場合には、 revert-bufferは自動保存ファイルを使うかどうか ユーザーに問い合わせる。 しかし、引数ignore-autonil以外であると、 訪問したファイルのみを使う。 対話的に呼ばれた場合、数値前置引数を指定しない限り、 ignore-autotである。 したがって、対話的な場合のデフォルトでは、自動保存ファイルを検査する。

通常、バッファを変更するまえにrevert-bufferは確認してくる。 しかし、引数noconfirmnil以外であると、 revert-bufferは確認しない。

復元作業では、 insert-file-contentsの置換機能を用いて バッファ内のマーカ位置を保存するように努める。 復元操作のまえにバッファの内容とファイルの内容が同一であれば、 すべてのマークが保存される。 同一でなければ、復元によりバッファが変更され、 バッファの先頭と末尾の(あれば)未変更なテキスト内のマーカを保存する。 それ以外のマーカを保存しても問題を引き起こすだけであろう。

以下の変数を典型的にはバッファローカルな変数として設定することで revert-bufferの動作をカスタマイズできます。

— 変数: revert-without-query

この変数は、問い合わせずに復元すべきファイルのリストを保持する。 値は、正規表現のリストである。 ファイル名がこれらの正規表現の1つに一致すると、 ディスク上のファイルが変更されていて当該バッファが未変更であれば、 revert-bufferはユーザーに確認せずに当該ファイルを復元する。

— 変数: revert-buffer-function

この変数の値は、このバッファを復元するために使う関数である。 nil以外であれば、復元を行う引数なしの関数として呼び出される。 値がnilであると、復元操作は通常の方法で行われる。

diredモードなどのモードでは、 編集中のテキストはファイルの内容ではなく 別の方法で再生成されたものなので、 この変数のバッファローカルな値には内容を再生成する関数を指定すること。

— 変数: revert-buffer-insert-file-contents-function

この変数の値がnil以外であると、 このバッファを復元するときに更新内容を挿入するために使われる関数である。 当該関数は2つの引数をとる。 第1引数は、使用するファイル名である。 第2引数は、ユーザーが自動保存ファイルを 読むように指示しているとtである。

— 変数: before-revert-hook

このノーマルフックは、revert-buffer-functionnilである 場合にのみ、変更内容を実際に挿入するまえにrevert-bufferが実行する。

フォントロック(font-lock)モードはこのフックを使って、 バッファ内容をこれ以上強調表示しないことを記録する。

— 変数: after-revert-hook

このノーマルフックは、revert-buffer-functionnilである 場合にのみ、変更内容を実際に挿入したあとにrevert-bufferが実行する。

フォントロック(font-lock)モードはこのフックを使って、 更新されたバッファ内容に対するフォントを再計算する。