在此特殊情况下,不突出显示函数名称

在此特殊情况下,不突出显示函数名称

如果我按以下方式编写一个函数:

int foo(int bar)
{}

Sublime 可以foo正确突出显示。但是,在这种情况下:

int foo
    (int bar)
{}

foo失去所有突出显示。

我喜欢 C++ 的一点是它不关心空格。有没有什么方法可以让 Sublime 正确地突出显示此代码?

编辑:

在获得一些指示并浏览默认语法文件后,出现以下情况:

<string>(?x)
(?:  ^                                 # begin-of-line
  |
     (?: (?= \s )           (?&lt;!else|new|return) (?&lt;=\w)      #  or word + space before name
       | (?= \s*[A-Za-z_] ) (?&lt;!&amp;&amp;)       (?&lt;=[*&amp;&gt;])   #  or type modifier before name
     )
)
(\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\s*\()
(
    (?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ |                  # actual name
    (?: (?&lt;=operator) (?: [-*&amp;&lt;&gt;=+!]+ | \(\) | \[\] ) )  # if it is a C++ operator
)
 \s*(?=\()</string>

似乎是正则表达式出了问题。但是,我不明白为什么它没有得到我的代码;最后一行,\s*(?=\()应该匹配括号前的任何数量的空格或换行符,不是吗?

答案1

Sublime Text 的语法高亮是完全可配置的。您可以创建默认 C++ 语法高亮规则的副本,对其进行改进,然后告诉 ST3 使用您的改进版本。

ST3 使用 Textmate 兼容的语法高亮规则,如下所述这里。如果你不喜欢直接在 Plist 上工作,你可以使用 JSON 或其他格式,然后使用AAA软件包开发(可轻松安装包控制)。

默认 C++ 包(包括语法高亮规则)位于C:\Program Files\Sublime Text 3\Packages\C++.sublime-package。您的自定义包可以放在C:\Users\%USERNAME%\AppData\Roaming\Sublime Text 3\Packages\User。最简单的方法是通过 ST 的菜单访问该位置:首选项 → 浏览包

相关内容