我正在编写扩展程序,并且正在提供自定义命令,请在package.json
中声明为:
{
"contributes": {
"commands": [
{
"command": "myext.doSomething",
"title": "Do something"
}
]
}
}
然后我在扩展中注册它:
commands.registerCommand("myext.doSomething", () => console.log("hi"))
这有效,但是即使扩展名未激活,命令面板中仍存在Do Something
命令。
这意味着如果用户在扩展名未激活时选择命令,则会出现错误消息
找不到命令
myext.doSomething
是否有一种方法可以阻止自定义命令显示在命令面板中,除非扩展已被激活?
答案 0 :(得分:1)
您可以在B
中像这样将扩展名添加到activationEvents
中,而不是不显示该命令。对于您的情况:
package.json
这将在调用命令之前运行扩展程序的导出的{
"activationEvents": [
"onCommand:myext.doSomething"
]
}
函数。
您也可以选择when
关键字。我回答了关于该主题here的类似问题。
修改:
您可以通过另外提供上下文菜单(docs)来控制命令面板中命令的可见性。那么,例如,仅当编辑器的文件具有特定的语言ID时,您才可以显示命令。
示例:
activate