如何在VS代码的扩展中隐藏调色板菜单中的命令



我正在从这个页面开始构建一个VS代码扩展。现在我想在运行命令extension.timerStart后将其隐藏在调色板菜单中。我已经阅读了这一页,但没有帮助。我有package.json的以下代码。我如何使varFromMyExtension===false部分工作?

"contributes": {
"commands": [
{
"command": "extension.timerStart",
"title": "Timer Start"
}
],
"menus": {
"commandPalette": [
{
"command": "extension.timerStart",
"when": "varFromMyExtension===false"
}
]
}

我认为不可能在when子句中直接访问扩展中的变量。但是,您可以访问settings.json的任何配置。

来自文档(本章底部(:

注意:您可以在此处使用任何计算结果为前缀为"config."的布尔值的用户或工作区设置。

因此,当您的扩展提供名为varFromMyExtensionboolean配置时,您应该能够在when子句中使用它。然后,这个配置也可以通过编程进行操作。

所以你的package.json可能会包含这样的东西(未测试(:

"contributes": {
"commands": [
{
"command": "extension.timerStart",
"title": "Timer Start"
}
],
"menus": {
"commandPalette": [
{
"command": "extension.timerStart",
"when": "!config.myextension.varFromMyExtension"
}
]
},
"configuration": {
"type": "object",
"title": "Indicates whether ...",
"properties": {
"myextension.varFromMyExtension": {
"title": "My title.",
"description": "My description",
"type": "boolean",
"default": false,
"pattern": "(true|false)"
}
}
}
}

但请记住,用户也可以查看和编辑此设置

最新更新