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


15.13.1 従来のFont Lock

フォントロック情報を提供するための“伝統的”な手法は正規表現検索、および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を参照してください。