フォントロック情報を提供するための“伝統的”な手法は正規表現検索、およびEmacsに組み込まれた構文テーブルを用いた構文解析にもとづいています。このサブセクションでは、これら伝統的手法を用いるメジャーモードでのフォントロックの用法とカスタマイズについて説明します。
変数font-lock-maximum-decoration
をカスタマイズして、この機能をサポートするメジャーモードにたいして、Font
Lockモードで適用されるフォント表示化の量を制御できます。この変数の値には数字を指定します(1は最小限のフォント表示化で、3という高いレベルのモードもあります)。t
は“可能な限り高く”という意味です(デフォルト)。効果を得るには、そのファイルがvisitされる前にfont-lock-maximum-decoration
をカスタマイズするべきです。この変数をカスタマイズする時点で、すでにそのファイルをバッファーでvisitしている場合は、そのバッファーをkillしてから、スタマイズ後に再度そのファイルをvisitしてください。
特定のモードに異なる数字を指定することもできます。たとえばC/C++モードにはレベル1を指定して、他のモードにはデフォルトのレベルを適用するには、以下の値を使います
'((c-mode . 1) (c++-mode . 1)))
コメントと文字列のフォント表示化(または“構文的”なフォント表示化)は、バッファーのテキストの構文構造の解析に依存します。速度向上のため、Lispモードを含めたいくつかのモードでは、特別な慣習に依存しています。たとえば一番左の列の開きカッコ(open-parenthesis)または開き大カッコ(open-brace)は常にdefunの開始であり、すなわち常に文字列またはコメントの外部にあるとみなす、というように解析します。したがって文字列やコメントの中で、一番左の列に開きカッコや開き大カッコを記述するのは避けるべきです。詳細については、左端の慣習を参照してください。
Font
Lockは、ほとんどのモードで既存のパターンをハイライトしますが、追加のパターンをフォント表示化したいときもあるでしょう。特定のモードでハイライトするパターンを追加するには、関数font-lock-add-keywords
を使うことができます。たとえばCコメント中の‘FIXME:’という単語をハイライトするには、以下を使います:
(add-hook 'c-mode-hook (lambda () (font-lock-add-keywords nil '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))))
font-lockのハイライトパターンからキーワードを削除するには、関数font-lock-remove-keywords
を使います。Search-based
Fontification in The Emacs Lisp Reference
Manualを参照してください。かわりにfont-lock-ignore
オプションをカスタマイズすれば、いくつかのキーワードによって選択的にハイライトを無効にすることもできます。Customizing
Keywords in The Emacs Lisp Reference Manualを参照してください。