Emacs中的正则表达式问题:如何突出显示以“//”开头的所有行?
我想在文字模式中将我的评论变灰,但以下代码段似乎不起作用:
(add-hook 'text-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("^//.+"
1 font-lock-comment-face prepend)))))
'Re-builder'表示这种表达式应该做的伎俩。怎么了?谢谢!
答案 0 :(得分:7)
好的,我明白了。 "^\\(//.*\\)$"
完成了这项工作。
抱歉可能是“垃圾邮件”。我事先做谷歌差不多两个小时;正则表达式似乎超出了我的想象。
答案 1 :(得分:3)
由于正则表达式匹配要应用突出显示的所有内容,因此有另一种方法:
(add-hook 'text-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("^//.+"
0 font-lock-comment-face prepend)))))
0
表示使用整个匹配(而不是1
用于第一个子模式等)。
请注意,如果您正在编写emacs模式,那么他们执行此操作的方式是通过定义合适的语法表来声明此类事物作为注释,然后安排突出显示器使用注释面部进行注释。 (我认为默认情况下会启用它。)tutorial on writing major modes涵盖完整的C ++风格注释,并说明如何自己完成。