mha*_*tzl 4 syntax-highlighting visual-studio-code vscode-extensions
是否可以在扩展内修改从 LSP 接收的语义标记修饰符的样式,而无需创建自定义主题?
我可以editor.semanticTokenColorCustomizations在我的settings.json文件中使用并添加我想要的自定义规则,但此设置不适用于VS Code 扩展的文件configurationDefaults。package.json
因此,以下代码片段在 中有效,而对于该字段下的扩展settings.json则不起作用。package.jsonconfigurationDefaults
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"rules": {
"*.declaration": {
"bold": true
},
"*.definition": {
"italic": true
},
"*.readonly": "#ff0000"
}
}
Run Code Online (Sandbox Code Playgroud)
还有别的办法吗?
理想情况下,我想更改我通过扩展引入的语言的标记类型和标记修饰符,但我不想创建用户需要使用的自定义主题来获得正确的突出显示。
注意:我被迫坚持使用 Microsoft 提供的语言客户端支持的令牌类型和修饰符。这些在LSP 规范中定义。
编辑:我使用带有语义标记的 LSP 来获取文件的标记类型和修饰符。这应该类似于使用 TextMate 语法。我遇到的问题是对这些标记应用正确的样式/突出显示。由于语言客户端限制了可用的标记,因此我在我的语言的标记和默认 LSP 标记之间应用了映射。
含义:标记修饰符declaration实际上bold在我的标记语言中
小智 5
您可以引入所有自定义语义标记,而无需将自己限制为内置标记。我个人更喜欢官方示例文件中提出的方式: 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
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为此,我亲自在 extension.ts 文件的图例中引入了 myToken。
要检查您的语义标记逻辑是否正常工作,您可以使用 [查看/命令面板/>开发人员:检查编辑器标记和范围]功能,该功能将显示附加到您的关键字的语义范围(如果有)。
如果提供的代码不适合您,请检查您的 package.json 并确保语言设置全部正确:可能与您相关的设置:
{
...
"activationEvents": ["onLanguage:myLanguage"], // make sure your extension is activated
"contributes": {"languages": [{"id": "myLanguage", "extensions": [".myLang"], "configuration": "./language-configuration.json"}]}
}
Run Code Online (Sandbox Code Playgroud)
此外,检查您的用户/工作空间设置是否干扰您的 package.json 设置。
| 归档时间: |
|
| 查看次数: |
6049 次 |
| 最近记录: |