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



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

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

然后我在扩展中注册它,当它激活时:

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

这是有效的,但即使扩展插件未处于活动状态,Do Something命令也会出现在命令选项板中。

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

未找到命令myext.doSomething

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

扩展不活动时不显示命令,只需在package.json中将其添加到activationEvents即可。在您的情况下:

{
"activationEvents": [
"onCommand:myext.doSomething"
]
}

这将在调用命令之前运行扩展的导出activate函数。

此外,when关键字可能是您的一个选项。我在这里回答了一个类似的问题。

编辑
您可以通过额外提供上下文菜单(文档(来控制命令托盘中命令的可见性。例如,只有当编辑器的文件具有特定的语言id时,才能显示命令。
示例:

{
"menus": {
"commandPalette": [
{
"command": "myext.doSomething",
"when": "editorLangId==scala"
}
]
}
}

相关内容

  • 没有找到相关文章

最新更新