次: Modification Time, 前: Buffer File Name, 上: Buffers
Emacsは、各バッファごとに当該バッファのテキストを変更したかどうかを
記録する変更フラグ(modified flag)と呼ばれるフラグを保持しています。
バッファの内容が変わるたびにこのフラグはt
に設定され、
保存するたびにnil
に設定されます。
つまり、このフラグは未保存の変更があるかどうかを表します。
このフラグの値は通常モード行(see Mode Line Variables)に表示され、
保存(see Saving Buffers)と
自動保存(see Auto-Saving)を制御します。
このフラグを明示的に設定するLispプログラムもあります。
たとえば、関数set-visited-file-name
はこのフラグをt
に設定します。
ファイルを訪問してから変更していなくても、
バッファのテキストが新たな訪問しているファイルとは一致しないからです。
バッファの内容を変更する関数についてはTextに述べてあります。
この関数は、最後にファイルから読み込んだり保存してから バッファbufferが変更されていれば
t
を返し、 さもなければnil
を返す。 bufferを指定しないとカレントバッファを調べる。
この関数は、flagが
nil
以外であれば カレントバッファは変更されていると印を付け、nil
ならば未変更であると印を付ける。この関数を呼び出した別の効果として、 カレントバッファのモード行を無条件に再表示する。 実際、関数
force-mode-line-update
はつぎのようにしている。(set-buffer-modified-p (buffer-modified-p))