【问题标题】:vscode extension: how to create a language specific commandvscode 扩展:如何创建特定于语言的命令
【发布时间】:2017-05-13 09:06:41
【问题描述】:

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

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

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

我的意思是只为 Python 执行这个命令。然而,据我所知,package.json 中的activationEvents 表示该命令将在打开 Python 文件或执行命令时激活。但是该命令可以在任何语言中执行。我搜索了文档,但找不到针对某些语言执行命令的方法。

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

【问题讨论】:

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


    【解决方案1】:

    恐怕目前这是不可能的。但是,您可以解决此问题以避免对其他文件产生任何副作用。

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

    它仍然允许从命令面板执行命令。要解决此问题,您可以在 Python 以外的文件中忽略它:

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

    请注意,我使用了registerTextEditorCommand 而不是常规命令。不同之处在于,这需要用户在文本编辑器上下文中才能工作,这就是您可能的情况

    【讨论】:

    • 实际上,这不仅仅是一种解决方法,而是常见的做法。您始终必须检查 languageId 字段,因为您可能会收到其他扩展程序为您自己的文档触发的通知。例如,其中一个 git 扩展打开内部文档,其名称与您的文本文档相同。区分它们的唯一方法是 lanugageId。
    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多