Next: Read Only Buffers, Previous: Buffer Modification, Up: Buffers [Contents][Index]
あるファイルをvisitしてそのバッファー内で変更を行い、その一方ではディスク上でファイル自身が変更されたとします。この時点でバッファーを保存するとファイル内の変更は上書きされるでしょう。これが正に望んでいる動作のときもありますが、通常は有用な情報が失われてしまいます。したがってEmacsはファイルを保存する前に、以下で説明する関数を使用してファイルの変更時刻をチェックします(ファイルの変更時刻を調べる方法はFile Attributesを参照)。
この関数はbuffer(デフォルトはカレントバッファー)にvisitされているファイルにたいして記録されている変更時刻と、オペレーティングシステムにより記録された実際の変更時刻を比較する。これら2つの時刻はEmacsがそのファイルをvisitか保存して以降、他のプロセスにより書き込みがされていなければ等しくなるはずである。
この関数は実際の最終変更時刻とEmacsが記録した変更時刻が同じならt
、それ以外はnil
をリターンする。そのバッファーが記録済みの最終変更時刻をもたない、すなわちvisited-file-modtime
が0をリターンするような場合にもt
をリターンする。
これはたとえvisited-file-modtime
が非0の値をリターンしたとしても、ファイルをvisitしていないバッファーにたいしては常にt
をリターンする。たとえばDiredバッファーにたいして、この関数は常にt
をリターンする。また存在せず、
以前に存在したこともなかったファイルをvisitするバッファーにたいしてt
をリターンするが、visitしているファイルが削除されたバッファーにたいしてはnil
をリターンする。
この関数はカレントバッファーによりvisitされているファイルの最終変更時刻の記録をクリアーする。結果としてこのバッファーにを次回の保存ではファイルの変更時刻の食い違いは報告されなくなる。
この関数はset-visited-file-name
、および変更済みファイルの上書きを防ぐための通常テストを行わない例外的な箇所で呼び出される。
この関数はカレントバッファーにたいして記録された最終ファイル変更時刻を(high low
microsec
picosec)
のような形式のリストでリターンする(これはfile-attributes
が時刻値をリターンするために使用するフォーマットと同じ。File Attributesを参照)。
バッファーが最終変更時刻の記録をもたなければこの関数は0をリターンする。これが発生するのは、たとえばバッファーがファイルをvisitしていなかったり、clear-visited-file-modtime
で最終変更時刻が明示的にクリアーされた場合。しかしvisited-file-modtime
は、いくつかの非ファイルバッファーにたいするリストをリターンすることに注意。たとえばディレクトリーをリストするDiredバッファーでは、Diredが記録するそのディレクトリーの最終変更時刻がリターンされる。
バッファーがファイルをvisitしていなければ、この関数は-1をリターンする。
この関数はバッファーがvisitしているファイルの最終変更時刻の記録を、timeが非nil
ならtime、それ以外はvisitしているファイルの最終変更時刻に更新する。
timeがnil
や0でなければ、それはcurrent-time
で使用される形式(high
low microsec picosec)
というフォーマットであること(Time of Dayを参照)。
この関数はバッファーが通常のようにファイルから読み取られたものでない場合や、ファイル自身が害のない既知の理由により変更されている場合に有用。
これはvisitしているファイルfilenameがバッファーのテキストより新しいときにバッファーの変更を試みた後、ユーザーに処理方法を尋ねるために使用する関数。Emacsはディスク上のファイルの変更時刻が、バッファーを最後に保存した時刻より新しいかどうかでこれを検知する。これはおそらく他のプログラムがそのファイルを変更したことを意味する。
この関数が正常にリターンするかどうかは、ユーザーの応答に依存する。関数はバッファーの変更が処理された場合は正常にリターンし、バッファーの変更が許可されなかった場合はデータ(filename)
とともにエラーfile-supersession
をシグナルする。
この関数は適切なタイミングでEmacsにより自動的に呼び出される。これは再定義することによりEmacsをカスタマイズ可能にするために存在する。標準的な定義はファイルuserlock.elを参照のこと。
File Locksのファイルロックのメカニズムも参照されたい。