Next: , Previous: , Up: Font Lock Mode   [Contents][Index]


22.6.3 Customizing Search-Based Fontification

メジャーモードにたいして検索ベースフォント表示ルールを追加するためにfont-lock-add-keywords、削除にはfont-lock-remove-keywordsを使用することができます。

Function: font-lock-add-keywords mode keywords &optional how

この関数は、カレントバッファー、またはメジャーモードmodeにたいして、ハイライトするkeywordsを追加する。引数keywordsは、変数font-lock-keywordsと同じ形式のリストであること。

modeが、c-modeのような、あるメジャーモードのコマンド名であるようなシンボルの場合には、そのmode内でFont Lockモードを有効にすることにより、keywordsfont-lock-keywordsに追加される効果がある。非nil値のmodeによる呼び出しは、~/.emacsファイル内でのみ正しい。

modenilの場合、この関数はカレントバッファーのfont-lock-keywordskeywordsを追加する。この方法でのfont-lock-add-keywords呼び出しは、通常はモードフック関数内で使用される。

デフォルトでは、keywordsfont-lock-keywordsの先頭に追加される。オプション引数howsetの場合、それらはfont-lock-keywordsの値の置換に使用される。howがそれ以外の非nil値の場合、これらはfont-lock-keywordsの最後に追加される。

追加のハイライトパターンの使用を可能にする、特別なサポートを提供するモードがいくつかある。それらの例については、変数c-font-lock-extra-typesc++-font-lock-extra-typesjava-font-lock-extra-typesを参照のこと。

警告: メジャーモードコマンドは、モードフックを除き、いかなる状況においても、直接間接を問わずfont-lock-add-keywordsを呼び出してはならない(これを行うと、いくつかのマイナーモードは不正な振る舞いを起こしかねない)。メジャーモードコマンドは、font-lock-keywordsをセットすることにより、検索ベースフォント表示のルールをセットアップすべきである。

Function: font-lock-remove-keywords mode keywords

この関数は、カレントバッファー、またはメジャーモードmodeにたいして、font-lock-keywordsからkeywordsを削除する。font-lock-add-keywordsの場合と同様、modeはメジャーモードコマンド名かnilであること。font-lock-add-keywordsにたいするすべての制約と条件は、この関数にも適用される。

たとえば、以下はCモードに2つのフォント表示パターンを追加するコードの例である。フォント表示の1つは、たとえコメント内であろうとも単語‘FIXME’をフォント表示し、もう1つは‘and’、‘or’、‘not’をキーワードとしてフォント表示する。

(font-lock-add-keywords 'c-mode
 '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
   ("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face)))

この例は、正にCモードだけに効果がある。Cモード、およびその派生モードにたいして同じパターンを追加するには、かわりに以下を行う:

(add-hook 'c-mode-hook
 (lambda ()
  (font-lock-add-keywords nil
   '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
     ("\\<\\(and\\|or\\|not\\)\\>" .
      font-lock-keyword-face)))))