如果扩展未激活,如何防止显示命令?

时间:2018-12-10 17:54:22

标签: visual-studio-code vscode-extensions

我正在编写扩展程序,并且正在提供自定义命令,请在package.json中声明为:

{
  "contributes": {
    "commands": [
      {
        "command": "myext.doSomething",
        "title": "Do something"
      }
    ]
  }
}

然后我在扩展中注册它:

commands.registerCommand("myext.doSomething", () => console.log("hi"))

这有效,但是即使扩展名未激活,命令面板中仍存在Do Something命令。

这意味着如果用户在扩展名未激活时选择命令,则会出现错误消息

  找不到

命令myext.doSomething

是否有一种方法可以阻止自定义命令显示在命令面板中,除非扩展已被激活?

1 个答案:

答案 0 :(得分:1)

您可以在B中像这样将扩展名添加到activationEvents中,而不是不显示该命令。对于您的情况:

package.json

这将在调用命令之前运行扩展程序的导出的{ "activationEvents": [ "onCommand:myext.doSomething" ] } 函数。

您也可以选择when关键字。我回答了关于该主题here的类似问题。

修改
您可以通过另外提供上下文菜单(docs)来控制命令面板中命令的可见性。那么,例如,仅当编辑器的文件具有特定的语言ID时,您才可以显示命令。
示例:

activate