gpt4 book ai didi

Emacs C++ 模式 : Highlighting Casts and Sizeof

转载 作者:行者123 更新时间:2023-12-04 20:25:13 24 4
gpt4 key购买 nike

我正在使用标准的(发货的)Emacs C++ 模式,但我有点想抓挠它。我将如何正确突出显示 sizeof 中的类型和 C++ 中的强制转换?

例如:

  • 类型转换
    Type * pointer = reinterpret_cast <Type *> (original);
  • 尺寸
    std::cout << sizeof (Type) << "\n";
  • 最佳答案

    将这些表达式添加到您的 .emacs ,或使用 M-: 评估它们.

    尺寸 (这是两种情况中较容易的一种)

    正则表达式突出显示括号内的字母数字、空格和星号的任何组合(由括号表达式 [...] 表示;关于语法,请参见下面的注释)并以 sizeof 开头。 .

    (font-lock-add-keywords 'c++-mode
    '(("\\<sizeof[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
    1 font-lock-type-face t)))

    号码 1告诉 emacs 仅使用面 \\(...\\) 突出显示第一个子表达式(由 font-lock-type-face 标记) ; t意味着覆盖任何以前的突出显示。

    您可以使用 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))))

    同样,'1 and 2`选择相应的子表达式。

    请注意:类型名的正则表达式并不完全符合 C++ 语法。例如,emacs 会很乐意高亮像 sizeof(int * 32) 这样的废话。 .

    另外,我的解决方案没有考虑到 Pavel 在对您的问题的评论中提到的问题;你也可以使用 sizeof在变量上,这需要不同的突出显示。我认为这是不可能的,因为没有在字体锁定代码中实现完整的 C 解析器。

    关于Emacs C++ 模式 : Highlighting Casts and Sizeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1868892/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com