默认情况下,Emacs 不会突出显示常量、结构成员、函数调用等(除非在定义中)。我在这里谈论的是 C 大调模式。
我想要一些基本的突出显示,只是基于文本匹配。例如,仅包含大写和下划线的单词 [A-Z_]+,例如 SOME_CONST,是一个常量(除非另有突出显示)。同样,我可以匹配 [a-zA-Z_][a-zA-Z0-9_] \s ( 作为函数调用; ->[a-zA-Z_][a-zA-Z0-9_]* 作为结构成员等
我该怎么做这个 emacs ?
默认情况下,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-keywords 的参数可以是正则表达式。