【发布时间】:2017-04-26 16:33:40
【问题描述】:
我正在开发 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();
}
}
这只是一个伪代码。但这就是重点。
【问题讨论】:
-
添加一个你正在谈论的例子(例如你的一个回调)。
-
感谢迈克的回复。我添加了伪代码来解释我想要什么。我希望这能解释我需要什么。
-
好的,我明白了,但我相信没有办法区分这两个事件(但是
*是一个包罗万象的事件,它也涵盖了workspaceContains的情况,不是吗?) .我在推测工作区回调,您可以在其中获取一个文档并检查 languageId 以查看它是否适用于您可以处理的特定文件类型。 -
是的。 * 将涵盖 workspaceContains 。但我不希望代码初始化的某些部分在所有事件中完成。我想我必须决定只使用 * 事件。检查 activate() 中的文件存在,然后从那里我可以继续。无论如何,谢谢你,迈克。为此提出功能请求是否有意义?
-
添加答案让您接受...
标签: visual-studio-code vscode-extensions