Joh*_*one 5 emacs syntax-highlighting
我正在使用标准(发货)Emacs C++模式,但我有一点点痒,我正在寻找划痕.我如何正确地突出显示sizeof中的类型和C++中的强制转换?
例如:
演员
Type * pointer = reinterpret_cast <Type *> (original);
SIZEOF
std::cout << sizeof (Type) << "\n";
将这些表达式添加到您的 中.emacs,或使用 评估它们M-:。
Sizeof(这是两种情况中更容易的一种)
正则表达式突出显示括号[...]内字母数字、空格和星号的任意组合(由括号表达式表示;有关语法,请参阅下面的注释)sizeof。
(font-lock-add-keywords 'c++-mode
'(("\\<sizeof[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
1 font-lock-type-face t)))
Run Code Online (Sandbox Code Playgroud)
该数字告诉 emacs 仅使用 Face1突出显示第一个子表达式(由 标记) ;意味着覆盖任何先前的突出显示。\\(...\\)font-lock-type-facet
您可以使用 来查看和更改可用的面M-x customize group [RET] font-lock-faces [RET]。
C++ 风格转换
我不确定您想要突出显示哪种类型名称 - “原始”或要转换的类型名称。该荧光笔标记了以下两个内容:
(font-lock-add-keywords 'c++-mode
'(("\\<[[:alnum:]]+_cast[[:space:]]*<\\([[:alnum:][:space:]*]+\\)>[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
(1 font-lock-type-face t)
(2 font-lock-type-face t))))
Run Code Online (Sandbox Code Playgroud)
再次,'1 and2`选择相应的子表达式。
请注意: 类型名称的正则表达式并不完全符合 C++ 语法。例如,emacs 会很高兴地突出显示诸如sizeof(int * 32).
另外,我的解决方案没有考虑帕维尔在对你的问题的评论中提到的问题;您也可以sizeof在变量上使用它,这需要不同的突出显示。我认为这不可能,除非在字体锁定代码中实现完整的 C 解析器。
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |