【问题标题】:check the source of activation of extension in visual studio code检查 Visual Studio 代码中扩展的激活源
【发布时间】:2017-04-26 16:33:40
【问题描述】:

我正在开发 Visual Studio 代码的扩展。我的扩展有几个激活事件。那么在激活回调中我如何区分激活源?例如,如果工作区包含特定文件夹或给出命令,则扩展会被激活。在激活回调中,我想为不同的激活执行不同的初始化。是否有任何 API 可以获取此信息?

例如: 在package.json 中,两个激活事件由

给出
...
  "activationEvents": [
    "workspaceContains:foo",
    "*"
  ],
...

extension.ts文件中会定义相应的激活回调。

...
export function activate(context: ExtensionContext): any {
...
}
...

在上述场景中,activate() 将在 2 个事件之一中被调用:

  1. 如果 vscode 打开。
  2. 如果一个文件夹被打开并且根目录中包含foo文件。

我想要的是这样的:

export function activate(context: ExtensionContext): any {
    if(/*activated by "*" event*/) {
        Init1();
    }
    else if(/*activated by "workspaceContains" event*/) {
        Init2();
    }
}

这只是一个伪代码。但这就是重点。

【问题讨论】:

  • 添加一个你正在谈论的例子(例如你的一个回调)。
  • 感谢迈克的回复。我添加了伪代码来解释我想要什么。我希望这能解释我需要什么。
  • 好的,我明白了,但我相信没有办法区分这两个事件(但是* 是一个包罗万象的事件,它也涵盖了workspaceContains 的情况,不是吗?) .我在推测工作区回调,您可以在其中获取一个文档并检查 languageId 以查看它是否适用于您可以处理的特定文件类型。
  • 是的。 * 将涵盖 workspaceContains 。但我不希望代码初始化的某些部分在所有事件中完成。我想我必须决定只使用 * 事件。检查 activate() 中的文件存在,然后从那里我可以继续。无论如何,谢谢你,迈克。为此提出功能请求是否有意义?
  • 添加答案让您接受...

标签: visual-studio-code vscode-extensions


【解决方案1】:

正如 cmets 中所述,无法区分这两个激活事件。事实上,激活是通过匹配 package.json 中的模式之一来完成的。除了文档之外,没有任何迹象表明 哪个 模式实际上是匹配的。这可能太细了,因此我怀疑为此创建功能请求是否有机会。

【讨论】:

    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    相关资源
    最近更新 更多