如何让VSCode主题识别C#接口?

时间:2017-11-13 20:16:34

标签: c# visual-studio-code vscode-settings

我试图让Visual Studio Code的主题符合我的要求。目前,我正在尝试使用Obsidian使用C#规则,但我不确定使用哪个关键字来覆盖颜色自定义。 VSCode似乎不识别接口,因为它们是特定于语言的。

"editor.tokenColorCustomizations": {
        "functions" :{
            "foreground": "#F1F2F3"
        },
        "interface": { //not valid
            "foreground": "#B48C8C"
        } 
    }

如何让VSCode颜色自定义识别c#特定语法?

3 个答案:

答案 0 :(得分:6)

editor.tokenColorCustomizations 可以使用多个值:注释,函数,关键字,数字,字符串,类型和变量。如果这些都不适用于您 textMateRules 也可用。所以你可以这样做:

"editor.tokenColorCustomizations": {
    "textMateRules": [{
        "scope": "yourScopeHere",
        "settings": {
            "fontStyle": "italic",
            "foreground": "#C69650"
        }
    }]
   },

所以你只需要弄清楚你需要什么范围" 接口"。

为此,尝试 CTRL - Shift - P 并输入范围:选择

Developer: Inspect TM Scopes  

并且对于选择的任何关键字,例如 interface ,您将获得其textmate范围的列表。这应该作为上面的范围值插入。 [根据我的经验,打开" 检查TM范围"更准确。单击面板,然后单击几个项目,然后单击所需的项目,如界面,范围面板将保持打开状态。]您可以从范围面板中复制。

您可能只需要列出的主要范围,但如果需要缩小其范围,您可以在范围中包含逗号分隔列表中列出的其他范围:...,...,... < / em>的

答案 1 :(得分:1)

基于Davi's answer

  1. 编辑“ C:\ Program Files \ Microsoft VS Code \ resources \ app \ extensions \ csharp \ syntaxes \ csharp.tmLanguage.json”:
  2. 查找:

    {“ name”:“ storage.type.cs”,“ match”:“ @?[ [:alpha:]] [ [:alnum:]] *”}

  3. 替换为:

    {“ name”:“ storage.type.interface.cs”,“ match”:“ @?[I] [[:: upper:]] [ [:alpha:]] [ [:alnum:]] “},{” name“:” storage.type.cs“,” match“:” @?[_ [:alpha:]] [_ [:alnum:]] “}

  4. 添加到settings.json:

    "editor.tokenColorCustomizations": {
        "[Default Dark+]": { // remove scope to apply to all themes
            "textMateRules": [
                {
                    "scope": "entity.name.type.interface.cs",
                    "settings": {
                        "foreground": "#b8d7a3"
                    }
                },
                {
                    "scope": "storage.type.interface.cs",
                    "settings": {
                        "foreground": "#b8d7a3"
                    }
                }
            ]
        }
    },

答案 2 :(得分:0)

我相信可以通过添加对“ storage.type.interface.cs”的支持并添加与正则表达式匹配的支持来部分编辑“ Program Files \ Microsoft VS Code \ resources \ app \ extensions \ csharp \ syntaxes”惯例。

类似[I]([A-Z][a-z][A-Za-z]*)

您还可以排除可能的不匹配,例如 IISManager, IPhoneDevice

https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide https://www.apeth.com/nonblog/stories/textmatebundle.html

祝你好运,如果完成了,请告诉我