【问题标题】:Emacs: How to set colour of punctuation / C operators?Emacs:如何设置标点符号/ C 运算符的颜色?
【发布时间】:2011-04-06 04:13:56
【问题描述】:

我需要一些 Emacs 语法高亮问题的帮助。我想设置所有 C/C++ 运算符的颜色。我遇到了麻烦,因为“/”用于除法(我想着色)但也用于启动 cmets(我不想自己着色,默认代码颜色很好。)我似乎不能弄清楚如何告诉 Emacs 在没有被任何其他正斜杠包围时只为单个正斜杠着色。

这就是我现在拥有的:

(add-hook 'c-mode-common-hook (lambda ()
  (font-lock-add-keywords nil         
    '(("[<>:&*=+^%!~,.?;/-]" 0 font-lock-warning-face t)))
))

但它不会正确突出显示如下内容:

i = 1 / 2
// Test
i=1/2//test

当然,如果已经有一种方法可以为标点符号/运算符分配颜色/面,而我刚刚错过了,请告诉我!

【问题讨论】:

  • 我认为运算符之间需要用 | 分隔。象征。如果你在font-lock-add-keywords 上执行describe-function,你会在示例中看到。
  • @vpit:正则表达式语法是可以的,[] 列出了一组要匹配的字符,在这种情况下| 符号没有特殊含义。

标签: regex emacs syntax-highlighting


【解决方案1】:

每个字体长条目的格式如下:

(SUBEXP FACENAME [OVERRIDE [LAXMATCH]])

规则中的t 对应于OVERRIDE 条目。如果您删除它,您的规则将不会重新突出显示已经突出显示的内容,例如 cmets 和字符串。

没有用于突出显示所有运算符的通用包,但 cwarn-mode 将突出显示嵌入在较大表达式中的 =+= 等,以及在不应该的情况下突出显示 ; ,例如if (condition);。它是使用函数而不是 regexp:s 实现的,如果您打算实现相对高级的字体锁定规则,我认为它是一个很好的参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2012-03-07
    • 2019-09-17
    相关资源
    最近更新 更多