GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Traditional-Font-Lock.html ・ emacs-doc.conao3.com

16.13.1 従来のFont Lock

「従来型」のfont-lock情報提供手法は、正規表現による検索と、Emacsに内蔵された構文テーブルを用いた構文解析に基づいています。本節では、これらの従来型手法を採用しているメジャーモードにおけるfont-lockの使用法とカスタマイズについて解説します。

この機能をサポートしているメジャーモードでは、変数 font-lock-maximum-decoration をカスタマイズすることで、Font Lock モードによるフォント化の適用量を制御できます。この変数の値には、数値(1 は最小限のフォント化を表し、モードによっては最大 3 まで対応しています)、または「可能な限り高く」を意味する t(デフォルト)を指定します。特定のファイルバッファに対して有効にするには、font-lock-maximum-decoration のカスタマイズをファイルを訪問する前に行う必要があります。この変数をカスタマイズする際にすでにバッファでファイルを訪問している場合は、バッファを破棄し、カスタマイズ後に再度ファイルを訪問してください。

また、特定のメジャーモードに対して異なる数値を指定することも可能です。例えば、C/C++モードではレベル1を使用し、それ以外の場合はデフォルトのレベルを使用するには、次の値を指定してください。

'((c-mode . 1) (c++-mode . 1)))

コメントおよび文字列のフォント化(または「構文」フォント化)は、バッファテキストの構文構造の解析に基づいています。処理速度向上のため、Lispモードを含む一部のモードでは特別な規約を採用しています。すなわち、最左列にある開き括弧または開き中括弧は常に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 関数を使用します。The Emacs Lisp Reference Manual の Search-based Fontification を参照してください。あるいは、font-lock-ignore オプションをカスタマイズすることで、特定のキーワードによるハイライトを選択的に無効にすることもできます。The Emacs Lisp Reference Manual の Customizing Keywords を参照してください。