我为vscode写了一个简单的扩展,它注册了一个命令,即comandName
。
在我的package.json
文件中,我有:
"activationEvents": [
"onLanguage:python",
"onCommand:commandName"
]
我的意思是只为Python执行此命令。但是,据我所知,activationEvents
中的package.json
表示在打开Python文件或执行命令时将激活该命令。但该命令可以在任何语言中执行。我搜索了文档但发现无法执行某些语言的命令。
有没有办法实现这个目标?
答案 0 :(得分:2)
我担心现在这是不可能的。但是,您可以解决此问题,以避免对其他文件产生任何副作用。
如果将此命令绑定到某个组合键或上下文菜单,则可以使用when clause将命令限制为特定类型的文件。
它仍然允许从命令调色板执行命令。要解决这个问题,你可以在Python以外的文件中忽略它:
vsc.commands.registerTextEditorCommand('testCommand', editor => {
if (editor.document.languageId !== 'python') {
return
}
// command logic
}))
注意我使用registerTextEditorCommand
而不是常规命令。不同之处在于,这个要求用户在文本编辑器上下文中工作,这是您可能的原因