0

我有一些很久以前借用的代码,当行太长时会设置一个长线:

 (add-hook 'font-lock-mode-hook
           (function
            (lambda ()
              (setq font-lock-keywords
                    (append font-lock-keywords
                            '( ("^.\\{133,\\}$" (0 'my-long-line-face t))
                              )
                            )
                    )
              )
            ))

(顺便说一句,我现在知道 font-lock-add-keywords ;就像我说的,这有点老了。)

问题是这改变了整条生产线的面貌。因此,如果我指出 long-line-face 是粗体,我会丢失该行的所有上下文自定义,并且它会出现在默认面中,但粗体。

我将如何让它保持上下文着色但使所有内容都变得大胆?

4

2 回答 2

2

t您正在使用字体锁定规范中的字体化覆盖。尝试将 更改(0 'my-long-line-face t)(0 'my-long-line-face prepend)(0 'my-long-line-face append)

于 2011-11-30T22:14:27.367 回答
1

尝试对您的代码进行此修改:

(add-hook 'font-lock-mode-hook
       (function
    (lambda ()
      (setq font-lock-keywords
        (append font-lock-keywords
            '( ("^.\\{133\\}\\(.*\\)$" (1 'my-long-line-face t))
              )
            )
        )
      )
    ))

关键是您希望正则表达式有一个跟随 133 个不太长的字符的子表达式,然后应用于my-long-line-face该子表达式 - 如 1 所示(而不是您拥有的 0)。有关更多详细信息,请参阅基于搜索的字体的信息页面。

于 2011-11-30T20:25:00.377 回答