2

我试图了解 Visual Studio Code 如何匹配主题和语言文件之间的标识符。例如,在一个 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>
...

dict 包含标识符punctuation.definition.string.begin.java-or-c来标识单引号字符串的开始。现在查看我拥有的一个 tmThemes 文件,从未提及此标识符,实际上我可以想象语言文件编写者可以自由使用他们想要的任何标识符。但是如何将主题与它们匹配,以便 VS Code 知道应用哪种颜色?是否有描述该过程的文档?

4

2 回答 2

2

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

您可能还想检查以下答案:
Tmlanguage 关键字类型是否有任何标准?

于 2016-08-14T12:48:16.483 回答
0

Visual Studio Code 显然使用了 TextMate 的样式方法,因此在 TextMate 中应用的大部分内容(例如主题和语言自定义)在 VS Code 中也是有效的。匹配与 CSS 选择器类似,如Scope Selectors文档中所述。简而言之:主题文件包含特定范围的颜色值(例如 DAXaholic 提到的那些)。这些与语言文件中指定的范围部分或完全匹配,例如范围“字符串”匹配所有“字符串。引用”范围等。

进一步阅读,特别是在语言 + 主题文件中应该支持哪些范围,可以在页面上完成:编写 TextMate 语法:一些经验教训,其中还提到了标准范围列表。

于 2016-08-14T14:51:25.777 回答