首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VSCode配置语法突出显示以匹配样式指南

VSCode配置语法突出显示以匹配样式指南
EN

Stack Overflow用户
提问于 2019-02-22 01:12:28
回答 1查看 1.3K关注 0票数 4

如何更改VSCode中的语法突出显示,使其符合特定的样式指南?例如,我希望遵循成员变量被写为some_member_variable_Google C++ style guide。当我使用这种约定时,VSCode对该名称的颜色不会与标准文本不同。但是我有一些使用mSomeMemberVariable约定的代码,而且它的颜色与其他文本不同。有没有更好地配置它的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 05:55:04

TL;DR >没有简单的方法来应用谷歌风格的语法突出显示,除非你找到一个现有的cpp语法文件(我找不到一个)。然而,以下是您自己实现它的方式。

查看CPP语法文件(cpp.tmLanguage.json),我们看到没有捕获Google样式的成员变量的范围模式。您可以添加一个:

代码语言:javascript
运行
复制
{ // this is the existing scope that matches mSomeMemberVariable
    "match": "\\b(f|m)[A-Z]\\w*\\b",
    "name": "variable.other.readwrite.member.cpp"
},
{ // you can add this scope to match some_member_variable_
    "match": "\\b([a-z][a-z\\d]*_)+\\b",
    "name": "variable.other.readwrite.member.google.cpp"
}

现在,您可以通过确保它的作用域(或任何外部作用域,如variable.other.readwrite.member)在您的主题的.json文件中具有主题规则来确保它的样式。

以下是更详细的解释。从here我们可以看到:

语法突出显示有两个组件:

  • 使用语法
  • 将文本分解为标记和范围列表,然后使用主题将这些范围映射到特定颜色和样式

首先,我们需要找出哪个“作用域”设置了成员变量的样式:

成员变量名(mSomeMemberVariable)

  • The上的
  • 命令调色板> ctrl+shift+p >最具体的作用域是最上面的条目。在这篇文章中,它被称为variable.other.readwrite.member.cpp

名称的.cpp部分告诉我们作用域是在C++语法(语法)中定义的。到目前为止,用于cpp语法的文件可以在[applications_folder]/code/resources/app/extensions/cpp/syntaxes/cpp.tmLanguage.json下找到(参见the github repo中的文件)。

在语法定义文件中搜索作用域名,我们会找到以下模式:

代码语言:javascript
运行
复制
{
    "match": "\\b(f|m)[A-Z]\\w*\\b",
    "name": "variable.other.readwrite.member.cpp"
}

为了查看应用于上述范围的样式,我们查看活动主题的*.json文件。例如,如果您正在使用Dark+ (默认的深色)主题,您可以在extensions/theme-defaults/themes/dark_plus.json中找到主题json文件。在此文件中,我们找到以下文本配对主题规则:

代码语言:javascript
运行
复制
{
    "name": "Variable and parameter name",
    "scope": [
        "variable",
        "meta.definition.variable.name",
        "support.variable",
        "entity.name.variable"
    ],
    "settings": {
        "foreground": "#9CDCFE"
    }
}

从该规则中,我们可以看到高亮显示是由variable作用域应用的。(请注意,除非专门指定内部作用域样式以覆盖它,否则所有外部作用域样式都将应用于内部作用域样式)

现在,您可以选择将自己的作用域添加到现有文件中。另一种方法是编辑现有的作用域,使其也与Google样式成员变量regex模式匹配。另一种选择是基于CPP扩展样式文件定义自己的语法,并创建自己的Google CPP VSCode扩展。例如,采用第一种方法,您可以按如下方式编辑cpp.tmLanguage.json

代码语言:javascript
运行
复制
{
    "match": "\\b([a-z][a-z\\d]*_)+\\b",
    "name": "variable.other.readwrite.member.google.cpp"
}

P.S.编辑json文件后,重新启动VSCode以使更改生效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54812670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档