本節では、メジャーモードが font-lock-defaults 内の other-vars を用いて設定できる追加の変数について説明します(Font Lock の基本 を参照)。
この変数が nil 以外の場合、M-x
font-lock-fontify-block
コマンドで再フォント化を行うための包含テキスト範囲を選択すべく、引数なしで呼び出される関数である必要があります。
関数は、選択範囲を囲むことでその選択結果を報告する必要があります。適切な選択範囲とは、適切な結果が得られる十分な広さがありつつ、再フォント化が遅くなるほど広すぎないテキスト範囲のことです。代表的な値としては、プログラミングモードでは
mark-defun、テキストモードでは mark-paragraph が挙げられます。
この変数は、Font Lock モードで管理される追加のプロパティ(font-lock-face
以外)を指定します。通常は font-lock-face プロパティのみを管理する font-lock-default-unfontify-region で使用されます。Font Lock
に他のプロパティも管理させたい場合は、このリストに追加するとともに、font-lock-keywords 内の facespec
でもそれらを指定する必要があります。検索ベースのフォント化 を参照してください。
バッファのフォント化に使用する関数。デフォルト値は font-lock-default-fontify-buffer です。
バッファのフォント化を解除する際に使用する関数。Font Lockモードをオフにする際に使用される。デフォルト値は font-lock-default-unfontify-buffer である。
リージョンをフォント化するために使用する関数。リージョンの開始位置と終了位置の2つの引数と、オプションの第3引数 verbose を受け取る必要があります。verbose が
nil 以外の場合、この関数はステータスメッセージを出力する必要があります。デフォルト値は
font-lock-default-fontify-region です。
領域のアンフォント化に使用する関数。領域の開始位置と終了位置の2つの引数を取る必要があります。デフォルト値は font-lock-default-unfontify-region です。
リージョンのフォント化が古くなっていることを宣言するための関数です。リージョンの開始位置と終了位置の2つの引数を取ります。この変数のデフォルト値は
font-lock-after-change-function です。
現在のバッファのリージョンがフォント化されていることを確認するための関数です。リージョンの開始位置と終了位置の2つの引数で呼び出されます。この変数のデフォルト値は、バッファがフォント化されていない場合に
font-lock-default-fontify-buffer
を呼び出す関数であり、これによりバッファのアクセス可能な全領域がフォント化されることが保証されます。
この関数は、Font Lockモードに対し、現在のバッファの一部をフォント化または再フォント化する必要があるたびに、Lisp関数 function を実行するよう指示します。デフォルトのフォント化関数を呼び出す前に function を呼び出し、フォント化または再フォント化の対象となる領域を指定する2つの引数 start と end を渡します。function がフォント化を行う場合、実際にフォント化した領域の範囲を示す (jit-lock-bounds beg . end)
形式のリストを返すことができます。Just-In-Time(別名 “JIT”)フォントロックはこの情報を利用して、後続の再表示サイクルや、今後の
function 呼び出しに渡すバッファテキストの領域を最適化します。
オプション引数 contextual は、nil
以外の場合、Font Lock
モードにおいて、変更された行だけでなく、バッファ内の構文的に意味のある部分を常に再フォント化するように強制します。この引数は通常、省略可能です。
バッファで Font Lock が有効になると、font-lock-keywords-only
の値(Syntactic Font Lock
を参照)が nil である場合、contextual
に nil 以外の値を渡してこの関数を呼び出します。
function が以前に jit-lock-register
を用いてフォント化関数として登録されていた場合、この関数はそれを登録解除します。
これは、JIT font-lock で実行されるコードのデバッグを支援するためのマイナーモードです。このモードを有効にすると、Lisp
エラーが抑制される再表示サイクル中に JIT font-lock
が通常実行するコードの大部分が、代わりにタイマーによって実行されるようになります。これにより、debug-on-error(エラー発生時のデバッガ起動を参照)や Edebug(Edebugを参照)といったデバッグ支援機能を用いて、font-lock のコードや JIT
font-lock で実行されるその他のコードの問題を特定し、修正することが可能になります。font-lock
の開発およびデバッグにおいて有用なもう一つのコマンドに font-lock-debug-fontify があります。Font Lock の基本を参照してください。