Next: Search-based Fontification, Up: Font Lock Mode [Contents][Index]
Font Lock機能はいくつかの基本的な関数にもとづきます。これらはそれぞれ対応する変数により指定される関数を呼び出します。このインダイレクションによりメジャーモードとマイナーモードはそのモードにあるバッファーのフォント表示が機能する方法を変更したり、フォント表示を何も行わない機能にたいしてさえFont Lockメカニズムを使用することが可能になります(以下の記述で関数が何を行うか説明する際に“should(すること、するべき)”と表現しているのはこれが理由。モードは完全に異なる何かを行うように対応する変数をカスタマイズできる)。以下で言及される変数はOther Font Lock Variablesで説明されています。
font-lock-fontify-buffer
この関数はfont-lock-fontify-buffer-function
で指定される関数の呼び出しにより、カレントバッファーのアクセス可能範囲をフォント表示すること。
font-lock-unfontify-buffer
フォント表示削除のためにFont
Lockをオフに切り替える際に使用する。font-lock-unfontify-buffer-function
で指定される関数を呼び出す。
font-lock-fontify-region beg end &optional loudly
begとendの間のリージョンをフォント表示すること。loudlyが非nil
なら、フォント表示中にステータスメッセージを表示すること。font-lock-fontify-region-function
で指定される関数を呼び出す。
font-lock-unfontify-region beg end
begとendの間のリージョンのフォント表示を削除すること。font-lock-unfontify-region-function
で指定される関数を呼び出す。
font-lock-flush &optional beg end
この関数はbegとendの間のリージョンのフォント表示を期限切れ(outdated)とマークすること。begとendが未指定またはnil
なら、デフォルトはそのバッファーのアクセス可能範囲の先頭と終端。font-lock-flush-function
で指定される関数を呼び出す。
font-lock-ensure &optional beg end
この関数はbegとendの間のリージョンのフォント表示を保証すること。オプション引数begとendのデフォルトは、そのバッファーのアクセス可能範囲の先頭と終端。font-lock-ensure-function
で指定される関数を呼び出す。
Font
Lockモードのテキストのハイライト方法を制御する変数がいくつかあります。しかしメジャーモードはこれらの変数を直接セットするべきではありません。かわりにメジャーモードはバッファーローカル変数としてfont-lock-defaults
をセットするべきです。Font
Lockモードが有効なときは、他のすべての変数をセットするためにこの変数に割り当てられた値が使用されます。
この変数はそのモード内のテキストをフォント表示する方法を指定するためにモードによりセットされる。この変数はセットした際に自動的にバッファーローカルになる。変数の値がnil
ならFont
Lockモードはハイライトを行わず、バッファー内のテキストに明示的にフェイスを割り当てるために‘Faces’メニュー(メニューバーの‘Edit’の下の‘Text
Properties’)を使用できる。
非nil
なら値は以下のようであること:
(keywords [keywords-only [case-fold [syntax-alist other-vars…]]])
1つ目の要素keywordsは検索ベースのフォント表示を制御するfont-lock-keywords
の値を間接的に指定する。値にはシンボル、変数、またはfont-lock-keywords
にたいして使用するリストが値であるような関数を指定できる。またそれぞれのシンボルがフォント表示の可能なレベルであるような、いくつかのシンボルからなるリストも指定できる。この場合には、1つ目のシンボルはフォント表示の‘モードデフォルト(mode
default)’レベル、次のシンボルはフォント表示のレベル1、その次はレベル2、...のようになる。‘モードデフォルト’レベルは通常はレベル1と等しい。これはfont-lock-maximum-decoration
がnil
値をもつとき使用される。Levels of Font Lockを参照のこと。
2つ目の要素keywords-onlyは変数font-lock-keywords-only
の値を指定する。これが省略またはnil
なら、(文字列とコメントの)構文的フォント表示も行われる。非nil
なら構文的フォント表示は行われない。Syntactic Font Lockを参照のこと。
3つ目の要素case-foldはfont-lock-keywords-case-fold-search
の値を指定する。非nil
なら検索ベースフォント表示の間、Font
Lockモードはcaseの違いを無視する。
4つ目の要素syntax-alistが非nil
なら、それは(char-or-string
.
string)
という形式のコンスセルのリストであること。これらは構文的フォント表示にたいする構文テーブルのセットアップに使用される。結果となる構文テーブルはfont-lock-syntax-table
に格納される。syntax-alistが省略またはnil
なら、構文的フォント表示はsyntax-table
関数によりリターンされる構文テーブルを使用する。Syntax Table Functionsを参照のこと。
(もしあれば)残りすべての要素はまとめてother-varsと呼ばれる。これらの要素はすべて(variable
.
value)
という形式をもつこと。これはvariableをバッファーローカルにしてから、それにvalueをセットすることを意味する。これらother-varsを使用して、最初の5つの要素による制御とは別にフォント表示に影響する他の変数をセットできる。Other Font Lock Variablesを参照のこと。
モードがfont-lock-face
プロパティ追加により明示的にテキストをフォント表示する場合には、自動的なフォント表示すべてをオフにするためにfont-lock-defaults
に(nil
t)
を指定できます。しかしこれは必須ではありません。font-lock-face
を使用して何かをフォント表示して、それ以外の部分のテキストを自動的にフォント表示するようにセットアップすることが可能です。