Next: , Previous: , Up: ディスプレイの制御   [Contents][Index]


15.14 インタラクティブなハイライト

Highlight Changesモードは、最近変更されたバッファー部分のテキストに、異なるフェイスを与えることによりハイライトするマイナーモードです。Highlight Changesモードを有効または無効にするには、M-x highlight-changes-modeを使います。

Hi Lockモードは、指定した正規表現にマッチするテキストをハイライトする、マイナーモードです。たとえば、プログラムのソースファイルで、特定の変数へのすべての参照をハイライトしたり、何らかのプログラムの大量の出力の一部をハイライトしたり、記事中の特定の名前をハイライトするために使用できます。Hi Lockモードを有効または無効にするには、コマンドM-x hi-lock-modeを使います。すべてのバッファーでHi Lockモードを有効にするには、M-x global-hi-lock-modeを使うか、.emacsファイルに(global-hi-lock-mode 1)と記述してください。

Hi LockモードはFont Lockモード(Font Lockモードを参照してください)と同じように動作しますが、ハイライトするパターンを明示的に正規表現で指定します。これらは以下のコマンドで制御できます(C-x wで始まるキーバインドは、M-s hで始まるグローバルなバインドが優先されるため推奨されておらず、将来のEmacsのバージョンで廃止されるでしょう)。

M-s h r regexp RET face RET
C-x w h regexp RET face RET

regexpにマッチするテキストを、フェイスfaceを使ってハイライトします(highlight-regexp)。ハイライトはバッファーがロードされている限り残ります。たとえば単語“whim”をデフォルトのフェイス(黄色いバックグラウンドカラー)でハイライトするには、M-s h r whim RET RETとタイプします。ハイライトには任意のフェイスを使うことができますが、Hi Lockモードはモード自身でいくつかのフェイスを提供しており、それらはデフォルト値のリストに事前ロードされています。フェイスの入力プロンプトでM-nM-pを使うことにより、それらを巡回することができます。プレフィクス数引数は対応する部分式にハイライトを制限します。

オプションhi-lock-auto-select-faceに非nil値をセットすることにより、このコマンド(およびその他のフェイスを読みとるHi Lockコマンド)は、入力を求めることなく、デフォルト値のリストから次のフェイスを自動的に選択します。

このコマンドを複数回使用して、さまざまな正規表現を指定し、それぞれを異なる方法でハイライトできます。

M-s h u regexp RET
C-x w r regexp RET

regexpのハイライトを解除します(unhighlight-regexp)。メニューから呼び出した場合、ハイライト解除する正規表現をリストから選択します。キーボードから呼び出した場合は、ミニバッファーを使います。一番最近追加された正規表現を表示し、M-nを使って次に古い正規表現、M-pで次に新しい正規表現を表示できます(手入力もでき、その場合は補完機能つきです)。ハイライト解除したい正規表現がミニバッファーに表示されたら、RETを押してミニバッファーを抜けだし、ハイライトを解除できます。

M-s h l regexp RET face RET
C-x w l regexp RET face RET

regexpとのマッチを含む行全体を、フェイスfaceを使ってハイライトします(highlight-lines-matching-regexp)。

M-s h p phrase RET face RET
C-x w p phrase RET face RET

phraseにマッチするフレーズを、フェイスfaceでハイライトします(highlight-phrase)。phraseには正規表現を指定できますが、スペースは空白文字にマッチする正規表現に置き換えられます。また、先頭に小文字を使用することにより、大文字小文字を区別しなくなります。

M-s h .
C-x w .

ポイントの近くで見つかったシンボルを、次に利用可能なフェイスでハイライトします(highlight-symbol-at-point)。

M-s h w
C-x w b

現在ハイライトを行っている正規表現/フェイスのペアを、バッファーのポイント位置に挿入します。挿入はプログラムを変更してしまわないように、コメント文字列でコメント化されます(このキーバインドはhi-lock-write-interactive-patternsコマンドを実行します)。

これらのパターンは、コメントからも逆抽出されます。それは、コメントに記述されたテキストが適正で、M-x hi-lock-find-patternsを呼び出した、あるいはHi Lockモードが有効なときファイルをvisit(これはhi-lock-find-patternsを実行します)したときです。

M-s h f
C-x w i

正規表現/フェイスのペアを、現在のバッファーのコメントから抽出します(hi-lock-find-patterns)。これらのコマンドを使えば、highlight-regexpでパターンを対話的に入力、hi-lock-write-interactive-patternsでそれをファイルに保存、それらを編集(あるマッチのフェイスを別のフェイスにしたり)、そして最後にこのコマンド(hi-lock-find-patterns)で編集済みのパターンを、Hi Lockのハイライトに適用することができます。

変数hi-lock-file-patterns-policyはファイルをvisitしたとき、Hi Lockモードがパターンを探して、それを自動的に抽出するべきかを制御します。値にはnil(ハイライトしない)、ask(ユーザーに尋ねる)、または関数を指定します。関数の場合、hi-lock-find-patternsはパターンを引数としてその関数を呼び出します。関数が非nilを返した場合、パターンを使用します。デフォルトはaskです。直接hi-lock-find-patternsを呼び出した場合、この変数の値に関係なく、常にパターンはハイライトされることに注意してください。

現在のメジャーモードのシンボルが、リストhi-lock-exclude-modesのメンバーの場合、hi-lock-find-patternsは何もしません。