检查 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 个事件之一中调用:
- 如果vscode打开。
- 如果文件夹打开后根目录下有
foo
个文件
我想要的是这样的:
export function activate(context: ExtensionContext): any {
if(/*activated by "*" event*/) {
Init1();
}
else if(/*activated by "workspaceContains" event*/) {
Init2();
}
}
这只是一个伪代码。但这就是重点。
如评论中所述,无法区分这两个激活事件。事实上,激活是通过匹配 package.json 中的一种模式来完成的。除了文档之外,没有迹象表明 哪个 模式实际匹配。这可能太细粒度了,因此我怀疑是否有机会为此创建一个功能请求。
我正在开发 visual studio 代码的扩展。我的扩展有几个激活事件。那么在激活回调中我如何区分激活源?例如,如果工作区包含特定文件夹或给出命令,扩展将被激活。在激活回调中,我想为不同的激活执行不同的初始化。有没有 API 获取此信息?
例如:
在 package.json
中,
...
"activationEvents": [
"workspaceContains:foo",
"*"
],
...
在 extension.ts
文件中将定义相应的激活回调。
...
export function activate(context: ExtensionContext): any {
...
}
...
在上述情况下,activate()
将在以下 2 个事件之一中调用:
- 如果vscode打开。
- 如果文件夹打开后根目录下有
foo
个文件
我想要的是这样的:
export function activate(context: ExtensionContext): any {
if(/*activated by "*" event*/) {
Init1();
}
else if(/*activated by "workspaceContains" event*/) {
Init2();
}
}
这只是一个伪代码。但这就是重点。
如评论中所述,无法区分这两个激活事件。事实上,激活是通过匹配 package.json 中的一种模式来完成的。除了文档之外,没有迹象表明 哪个 模式实际匹配。这可能太细粒度了,因此我怀疑是否有机会为此创建一个功能请求。