前: Magic File Names, 上: Files
変数format-alist
は、
Emacsバッファ内のデータ(テキスト、テキスト属性、その他の情報)を
ファイル内でテキスト表現する方法を記述した
ファイル書式(file format)のリストを定義します。
Emacsはファイルを読み書きするときに必要ならば書式変換を行います。
(name doc-string regexp from-fn to-fn modify mode-fn)
書式定義の各要素の意味はつぎのとおりです。
シェルコマンドは文字列で表現し、 Emacsは変換を行うために当該コマンドをフィルタとして実行する。
from-fnが関数であると、 バッファの変換すべき部分を指定するbeginとendの2つの引数で 呼ばれる。 当該関数はその場で編集してテキストを変換すること。 これによりテキストの長さが変わる可能性があるので、 from-fnは変更部分の末尾位置を返すこと。
from-fnの責任の1つは、
ファイルの先頭がregexpで始まらないように保証することである。
さもないと、再度呼び出される可能性がある。
to-fnが文字列であるとそれはシェルコマンドであり、 Emacsは変換を行うために当該コマンドをフィルタとして実行する。
to-fnが関数であると、 バッファの変換すべき部分を指定するbeginとendの2つの引数で 呼ばれる。 変換を行うには2つの方法がある。
(
position .
string)
の形の要素から成り、
positionは書き出すべきテキスト内での相対位置を指定する整数、
stringはそこに追加すべき注記である。
to-fnがリストを返すときには、
リストはpositionの順にソートしてあること。
write-region
がバッファからファイルへ実際に書き出すとき、
指定された注記を対応する位置に埋め込む。
これらすべては、バッファを変更せずに行われる。
t
、
注記のリストを返す場合にはnil
である。
関数insert-file-contents
は、指定されたファイルを読み込むときに
ファイル書式を自動的に認識します。
ファイルの先頭のテキストを書式定義の正規表現に対して検査して、
一致がみつかれば当該書式の復号化関数を呼び出します。
そして、既知の書式について再度調べ直します。
適用できる書式がなくなるまで検査し続けます。
関数find-file-noselect
やこれを使うコマンドでファイルを訪問すると、
(insert-file-contents
を呼び出すので)同様に変換を行います。
さらに、この関数は、復号した各書式についてモード関数を呼び出します。
バッファローカルな変数buffer-file-format
に
書式名のリストを保存します。
この変数は、訪問したファイルの書式を記述している。 より正確には、カレントバッファのファイルを訪問する過程で 復号したファイル書式名のリストである。 この変数は、すべてのバッファにおいてつねにバッファローカルである。
write-region
がデータをファイルに書き出すときには、まず、
buffer-file-format
で指定された書式の符号化関数を
リストに現れる順に呼び出します。
このコマンドは、カレントバッファの内容を書式formatにて ファイルfileに書き出す。 さらに、当該書式をバッファを将来保存するときのデフォルトとする。 引数formatは、書式名のリストである。
このコマンドは、ファイルfileを探し、 それを書式formatに従って変換する。 さらに、当該書式をバッファをのちに保存するときのデフォルトとする。
引数formatは、書式名のリストである。 formatが
nil
であると、変換を行わない。 対話的に呼び出した場合、 formatにnil
を指定するには<RET>のみを打つ。
このコマンドは、ファイルfileの内容を書式formatに従って 変換して挿入する。 begとendが
nil
以外であると、 それらは、insert-file-contents
(see Reading from Files)と同様に、 読み込むべきファイルの部分を指定する。戻り値は、
insert-file-contents
が返す値に似ており、 絶対ファイル名と挿入データの(変換後の)長さのリストである。引数formatは、書式名のリストである。 formatが
nil
であると、変換を行わない。 対話的に呼び出した場合、 formatにnil
を指定するには<RET>のみを打つ。