Visual studio code Vscode扩展:如果扩展未激活,则隐藏菜单

Visual studio code Vscode扩展:如果扩展未激活,则隐藏菜单,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,Vscode扩展仅在满足某些条件时激活。(基于activationEvents) 在我的扩展中,我想添加一个菜单贡献。问题是,如果扩展未激活,单击按钮将触发错误。因此,理想情况下,只有当扩展处于活动状态时,它才会可见 我怎样才能做到这一点?when子句似乎对此太过有限 "activationEvents": [ "workspaceContains:server" ], "contributes": { "commands": [ { "c

Vscode扩展仅在满足某些条件时激活。(基于
activationEvents

在我的扩展中,我想添加一个菜单贡献。问题是,如果扩展未激活,单击按钮将触发错误。因此,理想情况下,只有当扩展处于活动状态时,它才会可见

我怎样才能做到这一点?
when子句
似乎对此太过有限

"activationEvents": [
    "workspaceContains:server"
],
"contributes": {
    "commands": [
        {
            "command": "extension.displayHelp",
            "title": "RCE Help"
        }
    ],      
    "menus": {
        "editor/title": [{
            "when": "resourceLangId != markdown",
            "command": "extension.displayHelp",
            "group": "navigation"
        }]
    },
}


编辑:

activationEvents
中添加
onCommand

尽管Vscode声明在错误消息中找不到该命令,但它确实找到了该命令,并决定不触发它

"activationEvents": [
    "onCommand:extension.displayHelp",
    "workspaceContains:server",
],
但是,如果扩展未激活,我仍然希望完全隐藏菜单贡献。

像下面这样使用代码

vscode.commands.executeCommand('setContext', 'yourCMD', true);

"menus": {
   "editor/context": [
      {
        "when": "editorHasSelection&&yourCMD",
         "command": "port.sendSelect",
          "group": "navigation"
       }
   ]
}

我的代码在这里

我有同样的问题,但我不想将onCommand添加到activationEvents。如果我的激活事件不匹配,命令将失败(缺少配置信息)。最好不要显示非活动扩展的贡献,或者至少可以选择。