Emacsがtree-sitterライブラリを用いてビルドされている場合、フォント化のために同ライブラリによるバッファテキストの解析結果を利用できます。tree-sitterライブラリは、サポートしているプログラミング言語やその他の形式付きテキスト向けに本格的なパーサーを提供しているため、これは通常、前節で説明した「従来の」手法よりも高速で高精度です。tree-sitterライブラリを利用するメジャーモードはfoo-ts-modeという名称になっており、「-ts-」の部分がライブラリの使用を示しています。本節では、tree-sitterライブラリに基づくFont
Lockのサポートについて解説します。
変数 treesit-font-lock-level
をカスタマイズすることで、Tree-sitter ベースのメジャーモードの Font Lock モードによるフォント化の度合いを調整できます。その値は
1 から 4 までの数値です:
このレベルでは通常、コメントと関数定義内の関数名のみがフォント表示されます。
このレベルでは、キーワード、文字列、データ型のフォント化が追加されます。
これはデフォルトのレベルで、代入や数値などのフォント装飾を追加します。
このレベルでは、演算子、区切り文字、括弧、その他の句読点、関数呼び出し時の関数名、プロパティ参照、変数など、フォント化可能なあらゆる要素が追加されます。
上述の各構文カテゴリが具体的に何を指すかは、メジャーモード、およびその言語に対してTree-sitterが使用するパーサー文法によって決まります。ただし一般的に、これらのカテゴリはプログラミング言語やメジャーモードがサポートするファイル形式の慣習に従っています。変数
treesit-font-lock-feature-list
のバッファローカル値には、Tree-sitterベースのメジャーモードがサポートするフォント化機能が格納されており、各サブリストは対応するフォント化レベルによって提供される機能を示しています。
M-x customize-variable 経由で treesit-font-lock-level の値を変更すると(特定項目のカスタマイズ
を参照)、その変更は既存のすべてのバッファ、および同じセッション内で今後アクセスするファイルに即座に反映されます。