英文:
Why don't certain VS Code themes have semantic highlighting, and how can I get semantic highlighting for them?
问题
在Visual Studio Code中,我想使用Tokyo Night颜色主题。然而,它将变量、模块、类标识符和属性设置为相同的颜色。我觉得这有点混淆,所以我尝试自定义它们为不同的颜色。但是,Tokyo Night颜色扩展替换了语义标记分析器,改为使用基于TextMate的分析器。
请参考下面的图片。比较VS Code的dark+颜色主题用于Python,它将np
的语义标记类型识别为模块。而Tokyo Night则不识别这一点。
如何在不改变语义分析器的情况下更改颜色主题?
英文:
In Visual Studio Code, I want to use the Tokyo Night colour theme. However, it sets variables, modules, class identifiers and properties to the same colour. I find this a bit confusing so I try to customise them to different colours. However, the Tokyo Night colour extension replaces the semantic token analyser with a TextMate-based one.
See images below. Compare VS Code's dark+ colour theme for Python, which recognises np
's semantic token type as a module. Tokyo Night does not recognise this.
How do I change the colour theme without changing the semantic analyser?
答案1
得分: 1
可能只是东京夜晚主题尚未为自身启用语义高亮。请参阅 https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide#enablement-of-semantic-highlighting。如果您查看VS Code的内置主题JSON文件,您会看到它们具有"semanticHighlighting": true
。例如,在Solarized Dark主题中。您可以在此处查看VS Code为其内置主题启用语义高亮的提交:41a4adb
。
我当前在https://github.com/enkia/tokyo-night-vscode-theme/blob/master/themes/tokyo-night-color-theme.json中没有看到类似的行。实际上,经过进一步的调查(我在这个相关讨论中找到了信息),东京之夜实际上曾经在其过去的某个时刻选择启用了语义高亮。请参阅提交ce2b1f1
,但在提交2dbedf6
中决定取消选择。
您可以通过将editor.semanticHighlighting.enabled
设置为true
,或在settings.json中执行以下操作,强制启用该主题的语义高亮:
"editor.semanticTokenColorCustomizations": {
"[Tokyo Night]": {
"enabled": true,
},
"[Tokyo Night Storm]": {
"enabled": true,
},
"[Tokyo Night Light]": {
"enabled": true,
},
},
英文:
It might just be that the tokyo night theme hasn't enabled semantic highlighting for itself. See also https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide#enablement-of-semantic-highlighting. If you look at the builtin theme JSON files of VS Code, you'll see that they have "semanticHighlighting": true
. Ex. in the Solarized Dark Theme. You can see the commit where VS Code opted in to semantic highlighting for its builtin themes here: 41a4adb
.
I currently don't see a line like that in in https://github.com/enkia/tokyo-night-vscode-theme/blob/master/themes/tokyo-night-color-theme.json. Actually, upon further digging (where I found this related discussion), Tokyo Night actually did at one point in its past opt in to semantic highlighting. See commit ce2b1f1
, but decided to opt back out in commit 2dbedf6
.
You can force semantic highlighting to be enabled for that theme by setting your editor.semanticHighlighting.enabled
setting to true
, or doing something like the following in settings.json:
"editor.semanticTokenColorCustomizations": {
"[Tokyo Night]": {
"enabled": true,
},
"[Tokyo Night Storm]": {
"enabled": true,
},
"[Tokyo Night Light]": {
"enabled": true,
},
},
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论