Next: , Up: Font Lock Mode   [Contents][Index]


22.6.1 Font Lockの基礎

Font Lockモードのテキストのハイライト方法を制御する変数がいくつかあります。しかしメジャーモードはこれらの変数を直接セットするべきではありません。かわりにメジャーモードはバッファーローカル変数としてfont-lock-defaultsをセットするべきです。Font Lockモードが有効なときは、他のすべての変数をセットするためにこの変数に割り当てられた値が使用されます。

Variable: font-lock-defaults

この変数は、そのモード内のテキストをフォント表示する方法を指定するために、メジャーモードによりセットされる。この変数は、セットした際に自動的にバッファーローカルになる。変数の値が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-decorationnil値をもつとき使用される。Levels of Font Lockを参照のこと。

2つ目の要素keywords-onlyは変数font-lock-keywords-onlyの値を指定する。これが省略またはnilなら、(文字列とコメントの)構文的フォント表示も行われる。非nilなら構文的フォント表示は行われない。Syntactic Font Lockを参照のこと。

3つ目の要素case-foldfont-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を参照のこと。

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を使用して何かをフォント表示して、それ以外の部分のテキストを自動的にフォント表示するようにセットアップすることが可能です。