Visual studio code 如果扩展未激活,如何防止显示命令?
我正在编写一个扩展,并提供一个自定义命令,在Visual studio code 如果扩展未激活,如何防止显示命令?,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我正在编写一个扩展,并提供一个自定义命令,在package.json中声明为: { "contributes": { "commands": [ { "command": "myext.doSomething", "title": "Do something" } ] } } 我正在扩展中注册它,当它激活时: commands.registerCommand("myext.doSomething", () =>
package.json
中声明为:
{
"contributes": {
"commands": [
{
"command": "myext.doSomething",
"title": "Do something"
}
]
}
}
我正在扩展中注册它,当它激活时:
commands.registerCommand("myext.doSomething", () => console.log("hi"))
这是可行的,但即使扩展未激活,命令选项板中也会出现执行操作
命令
这意味着,如果用户在扩展未激活时选择该命令,则会出现以下错误:
未找到命令myext.doSomething
有没有办法防止自定义命令显示在命令选项板中,除非扩展已被激活?如果扩展未激活,您可以将其添加到
包.json中的类似命令中,而不是不显示您的命令。就你而言:
{
“激活事件”:[
“onCommand:myext.doSomething”
]
}
这将在调用命令之前运行扩展插件的导出的activate
功能
关键字也可以是您的一个选项。我就这个话题回答了一个类似的问题
编辑:
通过另外提供上下文菜单(),可以控制命令在命令托盘中的可见性。例如,您只能在编辑器文件具有特定语言id时显示该命令。
例如:
{
“菜单”:{
“命令调色板”:[
{
“命令”:“myext.doSomething”,
“当”:“editorLangId==scala”
}
]
}
}
谢谢,但我不想在命令运行时启动扩展。只有当当前激活事件触发时,扩展才有意义,因此它缺少正确运行命令的上下文。另外,when
关键字仅适用于上下文菜单,不适用于命令。刚刚找到。它显示了如何使用when
关键字控制命令的可见性。因此,诀窍是在命令Pallete中添加上下文菜单。我不知道这是否有助于您的扩展尚未激活。不过,也许值得一试。谢谢!这确实有效,我能够将命令范围限定到所需的编辑器angid
。如果你在回答中包含了这个解释,我会把它标记为接受!