GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Auto-Faces.html ・ emacs-doc.conao3.com

42.12.7 顔の自動割り当て

このフックは、バッファ内のテキストにフェイスを自動的に割り当てるために使用されます。これは、Font-Lockで使用されるJit-Lockモードの実装の一部です。

変数: fontification-functions

この変数には、Emacsが再表示を行う直前に、必要に応じて呼び出される関数のリストが格納されています。これらの関数は、Font Lockモードが有効でない場合でも呼び出されます。Font Lockモードが有効な場合、この変数には通常、jit-lock-function という1つの関数のみが格納されます。

各関数は記載された順に呼び出され、引数としてバッファ位置 pos を1つ取ります。これらの関数は連携して、現在のバッファ内の pos から始まるテキストに面を割り当てようとします。

関数は、face プロパティを設定することで、割り当てたフェイスを記録する必要があります。また、フェイスを割り当てたすべてのテキストに、nil 以外の fontified プロパティを追加する必要があります。このプロパティは、そのテキストにすでにフェイスが割り当てられていることを再表示側に知らせるものです。

pos の後の文字がすでに nil や fontified 以外のプロパティを持っている場合、関数が何も行わないようにするのはおそらく良い考えでしょうが、必須ではありません。ある関数が直前の関数による代入を上書きする場合、最後の関数が終了した後のプロパティこそが実質的に重要となります。

効率性の観点から、これらの関数は、呼び出しごとに通常400〜600文字程度に面を割り当てるように記述することをお勧めします。

なお、バッファテキストに非常に長い行が含まれている場合、これらの関数は、with-restriction形式(Narrowingを参照)であるかのように呼び出され、long-line-optimizations-in-fontification-functionsラベルが付与され、バッファはpos周辺の範囲に狭められます。