Sublime C ++命名空间关键字颜色策划

时间:2015-10-11 04:20:46

标签: c++ sublimetext3

我在Sublime中遇到了烦人的行为。

当我开始输入行...

using namespace SomeNamespace;

关键字'使用'和'命名空间'正确着色关键字着色。然后,当我将分号添加到行的末尾时,namespace关键字变为白色(默认文本颜色)。我知道这不是那么重要,但它真的让我烦恼。

之前有没有人注意到这种行为?代码编译没有错误或警告,所以我知道sublime没有检测到代码问题。

有人对如何解决此问题有任何建议吗?

1 个答案:

答案 0 :(得分:2)

问题在于C ++语法定义中的这个特定正则表达式:

\b(namespace)\s+([A-Za-z_][_A-Za-z0-9:]*\b)?+(?!\s*?(;|=|,))

最后,在负向前瞻 - (?!...) - 我们看到分号被排除在匹配之外,这意味着如果在该行的最后出现分号,则表示没有分号匹配。

要修复它,您需要从Package Control安装非常有用的PackageResourceViewer插件。然后,打开命令选项板,键入 prv 以显示PackageResourceViewer选项,选择 Extract Package ,然后向下滚动并选择 C++ 。现在,通过选择 C++ ,打开的目录中将显示Preferences -> Browse Packages...目录。进入该目录,你会看到一堆文件。根据您正在使用的Sublime Text 3的版本,您需要在Sublime中打开C++.tmLanguageC++.sublime-syntax.tmLanguage格式是XML,因此如果您愿意,可以选择用于语法突出显示的格式,而.sublime-syntax文件位于YAML中。

一旦打开了相应的文件(你要么拥有一个或另一个,而不是两者),搜索上面的正则表达式,或者只搜索namespace,你应该很容易找到它。从最近端删除;|,完成整个事情:

\b(namespace)\s+([A-Za-z_][_A-Za-z0-9:]*\b)?+(?!\s*?(=|,))

保存文件,就是这样!您的C ++源文件应该立即更新它们的行为 - 如果没有,只需关闭并重新打开它们,在最坏的情况下,您可以关闭它们,重新启动Sublime,然后重新打开它们。

相关问题