是否可以具有未显示在命令面板中的 TreeView 操作?



我希望在我的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"
}
]
}

现在,在contributesmenus部分中,将命令的when表达式设置为false:

"contributes": {
"menus": {
"commandPalette": [
{
"command": "myExtension.myAction",
"when": "false"
}
]
}
}

when表达式控制命令何时显示在命令选项板中,因此这意味着它将永久不存在。请参阅文档。

最新更新