Visual studio code tmLanguage和tmTheme文件之间的标识符匹配

Visual studio code tmLanguage和tmTheme文件之间的标识符匹配,visual-studio-code,vscode-extensions,tmlanguage,Visual Studio Code,Vscode Extensions,Tmlanguage,我试图理解VisualStudio代码如何匹配主题文件和语言文件之间的标识符。例如,在一个tmLanguage文件中,我有这样一个定义: ... <dict> <key>begin</key> <string>'</string> <key>beginCaptures</key>

我试图理解VisualStudio代码如何匹配主题文件和语言文件之间的标识符。例如,在一个tmLanguage文件中,我有这样一个定义:

...
            <dict>
                <key>begin</key>
                <string>'</string>
                <key>beginCaptures</key>
                <dict>
                    <key>0</key>
                    <dict>
                        <key>name</key>
                        <string>punctuation.definition.string.begin.java-or-c</string>
                    </dict>
                </dict>
...
。。。
开始
'
开始接受
0
名称
标点符号.definition.string.begin.java-or-c
...
dict包含标识符标点符号.definition.string.begin.java-or-c,用于标识单引号字符串的开头。现在查看我拥有的一个tmThemes文件,这个标识符从未被提及,事实上我可以想象语言文件编写者可以自由使用他们想要的任何标识符。但如何将主题与它们匹配,以便VS代码知道应用哪种颜色?是否有描述该过程的文档?

有一些(滚动使用的标识符,以便主题可用于多种语言)。
所以基本上你是对的,编写语言文件的人理论上完全可以免费使用他喜欢的任何标识符,但是可能还需要一个附带的主题文件

您可能还需要检查以下答案:

Visual Studio代码显然使用了TextMate的样式化方法,因此TextMate中的许多应用(例如主题和语言自定义)在VS代码中也是有效的。匹配与CSS选择器类似,如文档中所述。简言之:主题文件包含特定范围的颜色值(例如DAXaholic提到的那些)。这些部分或完全匹配语言文件中指定的作用域,例如作用域“string”匹配所有“string.quoted”作用域等


进一步阅读,特别是在language+主题文件中应该支持哪些作用域,可以在以下页面上完成:,其中还提到了标准作用域的列表

⇬ 因为这让我开始了,尽管它并没有真正回答这个问题。