3

コードの一部を特定の背景色で強調表示したいのですが、残りのコードの強調表示はそのままにしておきたいです。つまり、キーワードは引き続き font-lock によってキーワードとして強調表示され、背景のみが変更されます。

現時点では、font-lock-add-keywords を使用してそれを行っています。正規表現は強調表示したいものに一致し、一致するたびに次のように定義された顔を前に追加します。

(:background "#d1eaff")

ただし、このフェイスを追加すると、前景色などの以前の属性は保持されず、デフォルトのフェイスとこの背景色が使用されます。

現在の顔を使用し、背景色のみを新しいものに置き換える方法はありますか? 既存の顔に新しい属性を追加するのは好きですか?

4

1 に答える 1

2

あなたが探しているのはoverlays.

compilation-error次のコード スニペットは、現在のバッファーの文字 1 から 3 に顔を追加します。

(overlay-put (make-overlay 1 4)
             'face 'compilation-error)

数値の代わりに、正規表現検索の結果や、オーバーレイの境界を決定するために使用したものを入れることができます。

于 2012-04-18T02:10:22.607 に答える