激活事件
激活事件是您在扩展清单activationEvents
字段中所做的一组 JSON 声明。当激活事件发生时,您的扩展将被激活。以下是所有可用激活事件的列表:package.json
onLanguage
onCommand
onDebug
workspaceContains
onFileSystem
onView
onUri
onWebviewPanel
onCustomEditor
onAuthenticationRequest
onStartupFinished
*
package.json
我们还提供了扩展清单中所有字段的参考。
语言上
每当打开解析为某种语言的文件时,就会发出此激活事件,并且将激活感兴趣的扩展。
...
"activationEvents": [
"onLanguage:python"
]
...
该onLanguage
事件采用语言标识符值。
onLanguage
可以使用数组中的单独条目来声明多种语言activationEvents
。
"activationEvents": [
"onLanguage:json",
"onLanguage:markdown",
"onLanguage:typescript"
]
...
注意:从 VS Code 1.74.0 开始,您的扩展提供的语言不需要相应的
onLanguage
激活事件声明即可激活您的扩展。
此外,如果您的扩展程序需要在使用任何语言之前激活,您可以使用通用onLanguage
激活事件来确保这一点:
"activationEvents": [
"onLanguage"
]
注意:最佳做法是仅在用户需要您的扩展时才激活。如果您的扩展适用于一部分语言,则用户最好列出该子集,而不是在所有语言上激活。
指挥
每当调用命令时,都会发出此激活事件,并且将激活感兴趣的扩展:
...
"activationEvents": [
"onCommand:extension.sayHello"
]
...
注意:从 VS Code 1.74.0 开始,您的扩展提供的命令不需要相应的
onCommand
激活事件声明即可激活您的扩展。
调试时
在调试会话开始之前,将发出此激活事件并激活感兴趣的扩展:
...
"activationEvents": [
"onDebug"
]
...
这是两个更细粒度的onDebug
激活事件:
调试初始配置
onDebugInitialConfigurations
provideDebugConfigurations
在调用的方法之前触发DebugConfigurationProvider
。
调试解决
onDebugResolve:type
在调用指定类型resolveDebugConfiguration
的方法之前触发。DebugConfigurationProvider
经验法则:如果调试扩展的激活是轻量级的,请使用onDebug
. 如果是重量级的,则使用onDebugInitialConfigurations
和/或onDebugResolve
取决于是否DebugConfigurationProvider
实现了相应的方法provideDebugConfigurations
和/或resolveDebugConfiguration
。有关这些方法的更多详细信息,请参阅使用 DebugConfigurationProvider 。
工作区包含
每当打开文件夹并且该文件夹至少包含一个与glob 模式匹配的文件时,就会发出此激活事件,并且将激活感兴趣的扩展。
...
"activationEvents": [
"workspaceContains:**/.editorconfig"
]
...
文件系统上
每当读取特定方案中的文件或文件夹时,就会发出此激活事件,并且将激活感兴趣的扩展。这通常是file
- 方案,但对于自定义文件系统提供程序,会出现更多方案,例如ftp
或ssh
。
...
"activationEvents": [
"onFileSystem:sftp"
]
...
视图
每当 VS Code 侧边栏中展开指定 id 的视图时,就会发出此激活事件,并激活感兴趣的扩展(扩展或源代码管理是内置视图的示例)。
只要具有 id 的视图nodeDependencies
可见,就会触发下面的激活事件:
...
"activationEvents": [
"onView:nodeDependencies"
]
...
注意:从 VS Code 1.74.0 开始,您的扩展贡献的视图不需要相应的
onView
激活事件声明即可激活您的扩展。
上Uri
每当打开该扩展的系统范围 Uri 时,就会发出此激活事件,并且将激活感兴趣的扩展。Uri 方案固定为vscode
或vscode-insiders
。Uri 权限必须是扩展的标识符。Uri 的其余部分是任意的。
...
"activationEvents": [
"onUri"
]
...
如果vscode.git
扩展定义onUri
为激活事件,则它将在以下任一 Uris 打开时被激活:
vscode://vscode.git/init
vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git
vscode-insiders://vscode.git/init
(适用于 VS Code 内部人士)
在Webview面板上
每当 VS Code 需要恢复具有匹配的webview时,就会发出此激活事件,并且将激活感兴趣的扩展viewType
。
例如,下面的声明onWebviewPanel
:
"activationEvents": [
"onWebviewPanel:catCoding"
]
当 VS Code 需要恢复 viewType: 的 webview 时,将导致扩展被激活catCoding
。viewType 在调用中设置window.createWebviewPanel
,您将需要另一个激活事件(例如 onCommand)来最初激活您的扩展并创建 Web 视图。
自定义编辑器
每当 VS Code 需要创建具有匹配的自定义编辑器时,就会发出此激活事件,并且将激活感兴趣的扩展viewType
。
例如,下面的声明onCustomEditor
:
"activationEvents": [
"onCustomEditor:catCustoms.pawDraw"
]
当 VS Code 需要使用 viewType: 恢复自定义编辑器时,将导致扩展被激活catCustoms.pawDraw
。viewType 在customEditors
贡献点中设置并绑定到具有 的提供者registerCustomEditorProvider
。
注意:从 VS Code 1.74.0 开始,您的扩展贡献的自定义编辑器不需要相应的
onCustomEditor
激活事件声明即可激活您的扩展。
认证请求
authentication.getSession()
每当扩展请求具有匹配的身份验证会话(通过 API)时,就会发出此激活事件,并且将激活感兴趣的扩展providerId
。
例如,下面的声明onAuthenticationRequest
:
"activationEvents": [
"onAuthenticationRequest:github"
]
AuthenticationSession
当 VS Code 需要检索of 类型时,将导致扩展被激活github
。
注意:从 VS Code 1.74.0 开始,您的扩展提供的身份验证提供程序不需要相应的
onAuthenticationRequest
激活事件声明来激活您的扩展。
启动完成时
此激活事件将在VS Code 启动后一段时间发出,并且感兴趣的扩展将被激活。这与激活事件类似*
,但不会减慢 VS Code 的启动速度。*
目前,此事件在所有激活的扩展完成激活后发出。
...
"activationEvents": [
"onStartupFinished"
]
...
启动
*
每当 VS Code 启动时,都会发出激活事件,并且会激活感兴趣的扩展。
注意:为了确保良好的用户体验,请仅当其他激活事件组合在您的用例中不起作用时,才请在您的扩展中使用此激活事件。
...
"activationEvents": [
"*"
]
...
注意:一个扩展可以监听多个激活事件,这比监听
"*"
.
注意:扩展必须
activate()
从其主模块导出一个函数,并且当发出任何指定的激活事件时,VS Code仅会调用该函数一次。此外,扩展应该deactivate()
从其主模块导出一个函数,以便在 VS Code 关闭时执行清理任务。如果清理过程是异步的,则扩展必须返回 Promise 。如果清理同步运行,则deactivate()
扩展可能会返回undefined
。deactivate()