Emacs C++;模式:突出显示强制类型转换和大小 我使用标准(发货)Emacs C++模式,但我有点痒,我想被抓伤。我将如何正确地强调C++中的大小和类型?
例如:Emacs C++;模式:突出显示强制类型转换和大小 我使用标准(发货)Emacs C++模式,但我有点痒,我想被抓伤。我将如何正确地强调C++中的大小和类型?,emacs,syntax-highlighting,Emacs,Syntax Highlighting,例如: 演员阵容 Type*pointer=reinterpret\u cast(原件) Sizeof std::cout将这些表达式添加到您的.emacs,或使用M-:对其求值 Sizeof(这是两种情况中比较简单的一种) 正则表达式突出显示括号内的字母数字、空格和星号的任何组合(由括号表达式[…]表示;关于语法,请参见下面的注释),前面加上sizeof (font-lock-add-keywords 'c++-mode '(("\\<sizeof[[:space:]]*(\\([[
Type*pointer=reinterpret\u cast(原件)代码>
std::cout将这些表达式添加到您的.emacs
,或使用M-:
对其求值
Sizeof(这是两种情况中比较简单的一种)
正则表达式突出显示括号内的字母数字、空格和星号的任何组合(由括号表达式[…]
表示;关于语法,请参见下面的注释),前面加上sizeof
(font-lock-add-keywords 'c++-mode
'(("\\<sizeof[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
1 font-lock-type-face t)))
同样,“1和
2”选择相应的子表达式
<强>请注意:< /强>类型名的正则表达式不完全符合C++语法。例如,emacs会很高兴地突出显示像
sizeof(int*32)
这样的废话
另外,我的解决方案没有考虑到帕维尔在对你问题的评论中提到的问题;您还可以对变量使用sizeof
,这需要不同的突出显示。我认为这是不可能的,除非在字体锁定代码中实现一个完整的C解析器。你说的“正确突出显示”是什么意思?您希望在声明变量时以与类型名相同的方式突出显示类型名,还是希望以其他更“合适”的方式突出显示类型名?我希望在声明变量时突出显示类型名,是的。鉴于在sizeof(X)
中,X是类型还是变量完全取决于上下文,你希望它有多精确?
(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))))