我有一些我很久以前借来的代码,当这条线太长时会设置一条长线:
(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,BTW;就像我说的,这有点老了。)
问题是这改变了整条线的面貌。因此,如果我指出long-line-face是粗体,则会丢失该行的所有上下文自定义,并且它将显示在默认面中,但是显示为粗体。
我如何才能保持上下文着色,但让一切变得大胆?
答案 0 :(得分:2)
您在字体锁定规范中使用t
覆盖了最终状态。尝试将(0 'my-long-line-face t)
更改为(0 'my-long-line-face prepend)
或(0 'my-long-line-face append)
。
答案 1 :(得分:1)
尝试对您的代码进行此修改:
(add-hook 'font-lock-mode-hook
(function
(lambda ()
(setq font-lock-keywords
(append font-lock-keywords
'( ("^.\\{133\\}\\(.*\\)$" (1 'my-long-line-face t))
)
)
)
)
))
关键是你希望regexp有一个子表达式,它跟随133个不太长的字符,然后将my-long-line-face
应用于后面的子表达式 - 如1所示(而不是你有的0)。有关详细信息,请参阅Search-based Fontification的信息页。