【问题标题】:Specifying only a new background color for a keyword in font-lock-keywords只为 font-lock-keywords 中的关键字指定新的背景颜色
【发布时间】:2012-04-29 09:26:29
【问题描述】:

我想用特定的背景颜色突出显示代码的某些部分,但我希望其余的代码突出显示保持在原位。即,关键字仍应通过 font-lock 突出显示为关键字,只是它们的背景应该改变。

目前,我正在使用 font-lock-add-keywords 进行此操作,其中正则表达式匹配我想要突出显示的任何内容,并且对于每个匹配项,它都会预先定义如下定义的面:

(:background "#d1eaff")

但是当它添加这个人脸时,它并没有保留之前的前景色等属性,而是使用带有这个背景色的默认人脸。

有没有办法让它使用当前的面孔并且只用新面孔替换它们的背景颜色?喜欢为现有面孔添加新属性?

【问题讨论】:

    标签: emacs emacs-faces


    【解决方案1】:

    你要找的是overlays

    以下代码 sn-p 将在当前缓冲区中的字符 1 到 3 上添加人脸 compilation-error

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

    您可以使用正则表达式搜索的结果或用于确定叠加边界的任何内容来代替数字。

    【讨论】:

    • 您能否详细说明如何使用叠加层?答案应该是独立的。
    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2015-01-31
    相关资源
    最近更新 更多