【问题标题】:How do I hide a command in the palette menu from my extension in VS Code如何在 VS Code 中的扩展中隐藏调色板菜单中的命令
【发布时间】:2018-08-04 16:03:39
【问题描述】:
我正在从this 页面开始构建一个 VS Code 扩展。现在我想在我运行它之后在调色板菜单中隐藏命令extension.timerStart。我已阅读 this 页面,没有帮助。我有下面的 package.json 代码。如何使varFromMyExtension===false 部分工作?
"contributes": {
"commands": [
{
"command": "extension.timerStart",
"title": "Timer Start"
}
],
"menus": {
"commandPalette": [
{
"command": "extension.timerStart",
"when": "varFromMyExtension===false"
}
]
}
【问题讨论】:
标签:
visual-studio-code
vscode-extensions
【解决方案1】:
我认为不可能在when 子句中直接从您的扩展访问变量。但是,您可以访问settings.json 的任何配置。
来自docs(在章节底部):
注意:您可以在此处使用任何用户或工作区设置,其计算结果为布尔值,前缀为 "config."。
所以当你的扩展贡献了一个boolean configuration 称为varFromMyExtension 时,你应该可以在when 子句中使用它。那么这个配置也可以是manipulated programmatically。
所以你的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)"
}
}
}
}
但请记住,用户也可以查看和编辑此设置。