vscode扩展:如何创建特定于语言的命令

时间:2017-05-13 09:06:42

标签: python visual-studio-code vscode-extensions

我为vscode写了一个简单的扩展,它注册了一个命令,即comandName

在我的package.json文件中,我有:

"activationEvents": [
    "onLanguage:python",
    "onCommand:commandName"
]

我的意思是只为Python执行此命令。但是,据我所知,activationEvents中的package.json表示在打开Python文件或执行命令时将激活该命令。但该命令可以在任何语言中执行。我搜索了文档但发现无法执行某些语言的命令。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

我担心现在这是不可能的。但是,您可以解决此问题,以避免对其他文件产生任何副作用。

如果将此命令绑定到某个组合键或上下文菜单,则可以使用when clause将命令限制为特定类型的文件。

它仍然允许从命令调色板执行命令。要解决这个问题,你可以在Python以外的文件中忽略它:

vsc.commands.registerTextEditorCommand('testCommand', editor => {
    if (editor.document.languageId !== 'python') {
        return
    }
    // command logic
}))

注意我使用registerTextEditorCommand而不是常规命令。不同之处在于,这个要求用户在文本编辑器上下文中工作,这是您可能的原因