在 Emacs 中,如何在与某个正则表达式匹配的 C 模式缓冲区中语法突出显示文本



默认情况下,Emacs 不会突出显示常量、结构体成员、函数调用等(除非在定义中(。我在这里谈论的是C大调模式。

我想要一些基本的突出显示,仅基于文本匹配。例如,仅包含大写和下划线的单词 [A-Z_]+(例如 SOME_CONST(是一个常量(除非另有突出显示(。同样,我可以匹配 [a-zA-Z_][a-zA-Z0-9_]\s( 作为函数调用; ->[a-zA-Z_][a-zA-Z0-9_]* 作为结构成员等。

我该怎么做这个 emacs?

我认为你想要的elisp函数是font-lock-add-keywords。 我已经在我的 .emacs 中添加了以下内容,并得到了我认为你想要的大写单词:

(font-lock-add-keywords 'c-mode '("\<[A-Z_]+\>"))

您必须添加更多内容才能处理整数常量。 围绕此的一些文档警告说,如果您对正则表达式不智能,它可能会大大减慢速度,并且您应该使用 regexp-opt 来匹配多个关键字。

对我来说有点混乱的部分是font-lock-add-关键字的参数可以是正则表达式。

最新更新