【问题标题】:Vscode Extension: Hide menus contributions if extension is not activeVscode 扩展:如果扩展不活动,则隐藏菜单贡献
【发布时间】:2017-03-10 03:50:45
【问题描述】:

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

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

我怎样才能做到这一点? when-clause 似乎太有限了。

"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",
],

但是,如果扩展程序未激活,我仍然希望完全隐藏菜单贡献。

【问题讨论】:

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

标签: visual-studio-code vscode-extensions


【解决方案1】:

像这样使用代码

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

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

我的代码在这里https://github.com/hanfengcan/lemon

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多