检查 visual studio 代码中扩展的激活源

check the source of activation of extension in visual studio code

我正在开发 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();
    }
}

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

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