我希望在我的VS代码扩展中有一个TreeView,我希望能够右键单击视图中的项目,并在其中有一个包含操作的上下文菜单。实现这一点的官方方法是将其添加到清单的menus
对象:
"view/item/context": [
{
"command": "myExtension.myAction",
"when": "view == myExtension",
"group": "inline"
}
]
命令myExtension.myAction
现在(据我所知(必须添加到清单的commands
部分这会使它显示在命令选项板中这很不方便。我的上下文操作在右键单击项目的上下文之外是没有意义的,它只会扰乱命令面板。
有没有任何方法可以将视图操作与命令连接起来,而不让它们显示在命令面板中?
在我的测试中(并非绝对彻底(,更简单地说,它还可以将此启用子句添加到您的命令中:
"contributes": {
"commands": [
{
"command": "myExtension.myAction",
"when": "view == myExtension",
"enablement": "view == <your treeview id here>"
"group": "inline"
}
]
}
当我这样做时,命令不会显示在命令调色板中。然后你就不需要commandPalette
菜单项了。
这不是世界上最直观的东西,但它非常简单。首先,如答案中所述,您必须在扩展清单(package.json
(的commands
部分列出您的命令:
"contributes": {
"commands": [
{
"command": "myExtension.myAction",
"when": "view == myExtension",
"group": "inline"
}
]
}
现在,在contributes
的menus
部分中,将命令的when
表达式设置为false:
"contributes": {
"menus": {
"commandPalette": [
{
"command": "myExtension.myAction",
"when": "false"
}
]
}
}
when表达式控制命令何时显示在命令选项板中,因此这意味着它将永久不存在。请参阅文档。