回答:
ライブラリハイライトを使用して、オーバーレイまたはテキストプロパティ、特にpropertyを使用して領域を強調表示できますface
。背景を強調表示するには、属性を使用して、顔使用background
ではなくをforeground
。
テキストプロパティを使用する場合face
、一部のテキストからプロパティをコピーして、他のテキストに貼り付けることもできます。したがって、定義が変更されて大きくなった場合は、強調表示された部分の一部をコピーして、強調表示さface
れていない部分にそのプロパティを貼り付けることができます。
また、ライブラリで定義された関数を使用して、defunの強調表示を自動的に(たとえば、バッファ変更フックとして、または定期的にタイマーで)拡張して、変更を収容することもできます。
オーバーレイを使用する場合は、ハイライト消去コマンド(などhlt-eraser
)を使用して、ハイライトした最後の面のみを削除できます。強調表示を削除するテキストの上にマウスをドラッグします。
通常のフォントロックを使用できます。font-lock-keywords
定義の開始と終了を認識する関数を使用するパターンを追加します。Elispマニュアルのノードキーワードのカスタマイズ、および親ノードのフォントロックモードとその他の子を参照してください。
コメント後の更新
おそらく、領域ではなく領域に触れた行を強調表示し、強調表示をテキストの終わりを超えて拡張する(空白文字を含む)ことについて質問していると思います。それですか?もしそうなら、これを試してください:
(defun hlt-highlight-lines (start end face msgp)
"Highlight full lines in region, window-wide."
(interactive (list (save-excursion (goto-char (region-beginning))
(line-beginning-position))
(save-excursion (goto-char (region-end))
(line-beginning-position 2))
nil
t))
(hlt-highlight-region start end face msgp))
highlight
私にとってライブラリはうまくいきませんでした。テキストが置かれている背景のみを適用します。テキストが終了すると、背景色で停止します。なにか提案を?
highlight.el
。それがあなたを助けるなら、良いです。
isearch-highlight
とisearch-dehighlight