为Emacs中的注释部分添加语法突出显示


1

我有以下内容

(defun add-c-syntax-highlighting ()
  (font-lock-add-keywords nil '(
    ("\\<\\(\\-+\\)"   1 font-lock-warning-face prepend)
    ("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend))))

(add-hook 'c-mode-common-hook 'add-c-syntax-highlighting)

对这个简单缓冲区进行测试会产生看似矛盾的结果:

//FIXME:
//-------------

只有 FIXME fontified。我究竟做错了什么?

Answers:


2

我的水晶球告诉我你做错了是复制和粘贴你不理解的代码。看起来今天感觉很讽刺,对不起,我保证很快就会有一个新的。

至于你的问题,就是这个问题 \\< 在你的正则表达式中,这是一个特殊的构造函数,它匹配一个单词的开头,所以它永远不会在一个单词的前面匹配 - 因为单词只能以正确的字母或数字开头。


我确信它是语法表中的comment-start。我会尽快试试,谢谢
Sean Allred

再次感谢。我确实尝试在这里找到正则表达式语法的引用;以来 \\< 那里不标准 必须 是一些文件。我无法在手册中的任何地方找到它,但是 - 你知道我应该在哪里看吗?
Sean Allred

@SeanAllred:是的,请看 Elisp手册,节点 Regexp Backslash,并寻找 \<。并看到节点 Syntax for Strings 有关加倍反斜杠的信息。
Drew

在手册中。这是 \< 特殊运算符(其中``需要在字符串中加倍,因为它是字符串中特殊的转义字符)。
Stefan

相关的,在我问另一个Q之前(如果这是另一个愚蠢的错误......) - 有什么理由它应该适用于这张脸吗? gist.github.com/vermiculus/6b2e6aad3c2ec14dc20d @Drew啊,我想没有(简单)方法来标记仅注释语法。
Sean Allred
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.