Next: , Previous: , Up: Font Lockモード   [Contents][Index]


24.6.8 構文的なFont Lock

構文的フォント表示(syntactic fontification)は、構文的に関連性のあるテキストを探してハイライトするために構文テーブル(syntax table: 構文テーブルを参照)を使用します。有効な場合には検索ベースのフォント表示に先立って実行されます。以下で説明する変数font-lock-syntactic-face-functionはどの構文的構造をハイライトするかを決定します。構文的フォント表示に影響を与える変数がいくつかあります。font-lock-defaultsのためにそれらをセットするべきです(Font Lockの基礎を参照)。

Font Lockモードが一連のテキストにたいして構文的フォント表示を処理するときは、常にsyntax-propertize-functionで指定される関数を最初に呼び出します。メジャーモードは特別なケースではsyntax-tableテキストプロパティを適用してバッファーの構文テーブルをオーバーライドするために、これを使用することができます。構文プロパティを参照してください。

Variable: font-lock-keywords-only

この変数の値が非nilなら、Font Lockは構文的フォント表示を行わずにfont-lock-keywordsにもとづく検索ベースのフォント表示だけを行う。これは通常はfont-lock-defaults内のkeywords-only要素にもとづいてFont Lockモードによりセットされる。値がnilならFont Lockはjit-lock-register (Font Lockのその他の変数を参照)を呼び出して、変更行以降のバッファーテキストに変更による新たな構文コンテキストを反映するために、自動的な再フォント表示をセットアップする。

構文的なフォント表示だけを使用するにはこの変数に非nil、そしてfont-lock-keywordsnilをセットする必要がある(Font Lockの基礎を参照)。

Variable: font-lock-syntax-table

この変数はコメントと文字列のフォント表示に使用するための構文テーブルを保持する。これは通常はfont-lock-defaults内のsyntax-alist要素にもとづいてFont Lockモードによりセットされる。この値がnilなら、構文的フォント表示はバッファーの構文テーブル(関数syntax-tableがリターンする構文テーブル。構文テーブルの関数を参照)を使用する。

Variable: font-lock-syntactic-face-function

この変数が非nilなら、それは与えられた構文的要素(文字列かコメント)にどのフェイスを使用するかを決定する関数であること。

この関数は1つの引数で呼び出され、parse-partial-sexpがリターンするポイントの状態をパースしてフェイスをリターンすること。リターンされるデフォルト値はコメントにたいしてはfont-lock-comment-face、文字列にたいしてはfont-lock-string-face (Font Lockのためのフェイスを参照)。

この変数は通常はfont-lock-defaults内の“他”の要素を通じてセットされる:

(setq-local font-lock-defaults
            `(,python-font-lock-keywords
              nil nil nil nil
              (font-lock-syntactic-face-function
               . python-font-lock-syntactic-face-function)))