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 回答