VS 代码扩展:设置自定义语义标记颜色
VS Code extension: setting custom semantic token colors
是否可以修改从 LSP 接收到的语义标记修饰符的样式
在扩展中无需创建自定义主题?
我可以在我的 settings.json
文件中使用 editor.semanticTokenColorCustomizations
并添加我想要的自定义规则,但是此设置不适用于 package.json
中的 configurationDefaults
VS 代码扩展文件。
因此,以下代码片段在 settings.json
中有效,而在 package.json
中对于 configurationDefaults
字段下的扩展无效。
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"rules": {
"*.declaration": {
"bold": true
},
"*.definition": {
"italic": true
},
"*.readonly": "#ff0000"
}
}
还有其他方法吗?
理想情况下,我想更改标记类型和标记修饰符
对于我在扩展中引入的语言,但我不想创建用户需要用来获得正确突出显示的自定义主题。
注意:我不得不坚持使用 Microsoft 提供的语言客户端支持的令牌类型和修饰符。这些在 LSP specification.
中定义
编辑: 我使用带有语义标记的 LSP 来获取文件的标记类型和修饰符。这应该类似于使用 TextMate 语法。
我遇到的问题是对这些标记应用正确的 styling/highlighting。由于语言客户端限制了可用的标记,我在我的语言标记和默认 LSP 标记之间应用了一个映射。
含义:标记修饰符 declaration
在我的标记语言中实际上是 bold
您可以引入所有自定义语义标记,而无需将自己限制在 built-in 中。我个人更喜欢官方示例文件中提出的方式:
semantic-tokens-sample.
至于样式,您可以轻松修改扩展名,包括。通过 package.json 文件的语义标记颜色如下。
{
...
"editor.semanticHighlighting.enabled": true, // not necessary, just make sure it is not disabled
"contributes": {
"semanticTokenTypes": [ // not necessary if you use own parsing with "DocumentSemanticTokensProvider"
{
"id": "myToken",
"superType": "myToken",
"description": "myToken"
}
],
"configurationDefaults": {
"editor.semanticTokenColorCustomizations": {
"rules": {
"comment": "#969896",
"string": "#B5BD68",
"myToken: "#323232" // custom
}
}
}
}
}
为此,我亲自在 extension.ts 文件的图例中介绍了 myToken。
要检查您的语义标记逻辑是否正常工作,您可以使用
[view/Command Palette/>开发人员:检查编辑器标记和作用域] 将显示关键字附加的语义范围(如果有)的功能。
如果提供的代码不适合您,请检查您的 package.json 并确保语言设置全部正确:
可能与您相关的设置:
{
...
"activationEvents": ["onLanguage:myLanguage"], // make sure your extension is activated
"contributes": {"languages": [{"id": "myLanguage", "extensions": [".myLang"], "configuration": "./language-configuration.json"}]}
}
进一步检查您的用户/工作区设置是否干扰了您的 package.json 设置。
是否可以修改从 LSP 接收到的语义标记修饰符的样式 在扩展中无需创建自定义主题?
我可以在我的 settings.json
文件中使用 editor.semanticTokenColorCustomizations
并添加我想要的自定义规则,但是此设置不适用于 package.json
中的 configurationDefaults
VS 代码扩展文件。
因此,以下代码片段在 settings.json
中有效,而在 package.json
中对于 configurationDefaults
字段下的扩展无效。
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"rules": {
"*.declaration": {
"bold": true
},
"*.definition": {
"italic": true
},
"*.readonly": "#ff0000"
}
}
还有其他方法吗?
理想情况下,我想更改标记类型和标记修饰符 对于我在扩展中引入的语言,但我不想创建用户需要用来获得正确突出显示的自定义主题。
注意:我不得不坚持使用 Microsoft 提供的语言客户端支持的令牌类型和修饰符。这些在 LSP specification.
中定义编辑: 我使用带有语义标记的 LSP 来获取文件的标记类型和修饰符。这应该类似于使用 TextMate 语法。 我遇到的问题是对这些标记应用正确的 styling/highlighting。由于语言客户端限制了可用的标记,我在我的语言标记和默认 LSP 标记之间应用了一个映射。
含义:标记修饰符 declaration
在我的标记语言中实际上是 bold
您可以引入所有自定义语义标记,而无需将自己限制在 built-in 中。我个人更喜欢官方示例文件中提出的方式: semantic-tokens-sample.
至于样式,您可以轻松修改扩展名,包括。通过 package.json 文件的语义标记颜色如下。
{
...
"editor.semanticHighlighting.enabled": true, // not necessary, just make sure it is not disabled
"contributes": {
"semanticTokenTypes": [ // not necessary if you use own parsing with "DocumentSemanticTokensProvider"
{
"id": "myToken",
"superType": "myToken",
"description": "myToken"
}
],
"configurationDefaults": {
"editor.semanticTokenColorCustomizations": {
"rules": {
"comment": "#969896",
"string": "#B5BD68",
"myToken: "#323232" // custom
}
}
}
}
}
为此,我亲自在 extension.ts 文件的图例中介绍了 myToken。
要检查您的语义标记逻辑是否正常工作,您可以使用 [view/Command Palette/>开发人员:检查编辑器标记和作用域] 将显示关键字附加的语义范围(如果有)的功能。
如果提供的代码不适合您,请检查您的 package.json 并确保语言设置全部正确: 可能与您相关的设置:
{
...
"activationEvents": ["onLanguage:myLanguage"], // make sure your extension is activated
"contributes": {"languages": [{"id": "myLanguage", "extensions": [".myLang"], "configuration": "./language-configuration.json"}]}
}
进一步检查您的用户/工作区设置是否干扰了您的 package.json 设置。