Next: Search-based Fontification, Up: Font Lock Mode [Contents][Index]
Font
Lockモードがテキストをハイライトする方法を制御する変数が、いくつかあります。しかし、メジャーモードは、これらの変数を直接セットするべきではありません。かわりに、メジャーモードはバッファーローカル変数として、font-lock-defaults
をセットするべきです。Font
Lockモードが有効なときは、他のすべての変数をセットするために、この変数に割り当てられた値が使用されます。
この変数は、そのモード内のテキストをフォント表示する方法を指定するために、メジャーモードによりセットされる。この変数は、セットした際に自動的にバッファーローカルになる。変数の値がnil
の場合、Font
Lockモードはハイライトを行わず、バッファー内のテキストに明示的にフェイスを割り当てるために、‘Faces’メニュー(メニューバーの‘Edit’の下の‘Text
Properties’)を使用できる。
非nil
の場合、値は以下のようであること:
(keywords [keywords-only [case-fold [syntax-alist [syntax-begin 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モードは大文字小文字の違いを無視する。
4つ目の要素syntax-alistが非nil
の場合、それは(char-or-string
.
string)
という形式のコンスセルのリストであること。これらは、構文的フォント表示にたいする構文テーブルのセットアップに使用される。結果となる構文テーブルは、font-lock-syntax-table
に格納される。syntax-alistが省略、またはnil
の場合、構文的フォント表示はsyntax-table
関数によりリターンされる構文テーブルを使用する。Syntax Table Functionsを参照のこと。
5つ目の要素syntax-beginは、font-lock-beginning-of-syntax-function
の値を指定する。この変数はnil
にセットして、かわりにsyntax-begin-function
の使用を推奨する。
(もしあれば)残りすべての要素は、まとめてother-varsと呼ばれる。これらの要素はすべて、(variable
.
value)
という形式をもつべきである。これは、variableをバッファーローカルにしてから、それにvalueをセットすることを意味する。これらother-varsを使用して、最初の5つの要素による制御とは別に、フォント表示に影響する他の変数をセットできる。Other Font Lock Variablesを参照のこと。
モードがfont-lock-face
プロパティ追加により明示的にテキストをフォント表示する場合は、自動的なフォント表示すべてをオフにするために、font-lock-defaults
に(nil
t)
を指定できます。しかし、これは必須ではありません。font-lock-face
を使用して何かをフォント表示して、それ以外の部分のテキストを自動的にフォント表示するようにセットアップするのは可能です。