是否可以通过编程方式检测VSCode中当前主题是亮还是暗?
用例:
我正在开发VSCode扩展,它将添加Hovers到编辑器中,并且我希望在悬停中具有图标。但是,悬停的背景会根据当前的颜色主题而变化,因此我需要选择要根据颜色主题显示的图标。
您可以在VSCode中的其他几个地方以以下形式指定图标网址:
let icon = {
light: "uri for light icon",
dark: "uri for dark icon",
};
因此,很明显,VSCode具有浅色主题与深色主题的概念。
这类似于this question,但回答的AFAIK仅适用于Web视图,并且this VSCode issue关闭后也会出现此问题
答案 0 :(得分:1)
从VS代码1.40开始,没有用于此的API。请file a feature request。
但是,如果您今天真的很想要此信息,则可以阅读当前用户的"workbench.colorTheme"
设置并将其映射为暗/亮。无需对编码进行硬编码,而是使用contributes
遍历所有已知扩展的vscode.extensions.all.map(ext => ext.packageJSON)
来查找它。这是一个示例主题贡献(您感兴趣的属性是uiTheme
):
{
...
"contributes": {
"themes": [
{
"label": "Red",
"uiTheme": "vs-dark",
"path": "./themes/Red-color-theme.json"
}
]
}
}