激活事件
激活事件是您在扩展清单activationEvents字段中所做的一组 JSON 声明。当激活事件发生时,您的扩展将被激活。以下是所有可用激活事件的列表:package.json
- onLanguage
- onCommand
- onDebug
- onDebugInitialConfigurations
- onDebugResolve
- workspaceContains
- onFileSystem
- onView
- onUri
- onWebviewPanel
- onCustomEditor
- onAuthenticationRequest
- onStartupFinished
*
package.json我们还提供了扩展清单中所有字段的参考。
onLanguage
每当打开解析为某种语言的文件时,就会发出此激活事件,并且将激活感兴趣的扩展。
...
"activationEvents": [
"onLanguage:python"
]
...
该onLanguage事件采用语言标识符值。
onLanguage可以使用数组中的单独条目来声明多种语言activationEvents。
"activationEvents": [
"onLanguage:json",
"onLanguage:markdown",
"onLanguage:typescript"
]
...
注意
注意:从 VS Code 1.74.0 开始,您的扩展提供的语言不需要相应的onLanguage激活事件声明即可激活您的扩展。
此外,如果您的扩展程序需要在使用任何语言之前激活,您可以使用通用onLanguage激活事件来确保这一点:
"activationEvents": [
"onLanguage"
]
注意
注意:最佳做法是仅在用户需要您的扩展时才激活。如果您的扩展适用于一部分语言,则用户最好列出该子集,而不是在所有语言上激活。
onCommand
每当调用命令时,都会发出此激活事件,并且将激活感兴趣的扩展:
...
"activationEvents": [
"onCommand:extension.sayHello"
]
...
注意
注意:从 VS Code 1.74.0 开始,您的扩展提供的命令不需要相应的onCommand激活事件声明即可激活您的扩展。
onDebug
在调试会话开始之前,将发出此激活事件并激活感兴趣的扩展:
...
"activationEvents": [
"onDebug"
]
...
这是两个更细粒度的onDebug激活事件:
调试初始配置:onDebugInitialConfigurationsprovideDebugConfigurations在调用的方法之前触发DebugConfigurationProvider。
调试解决:onDebugResolve:type在调用指定类型resolveDebugConfiguration的方法之前触发。DebugConfigurationProvider
workspaceContains
每当打开文件夹并且该文件夹至少包含一个与glob 模式匹配的文件时,就会发出此激活事件,并且将激活感兴趣的扩展。
...
"activationEvents": [
"workspaceContains:**/.editorconfig"
]
...
onFileSystem
每当读取特定方案中的文件或文件夹时,就会发出此激活事件,并且将激活感兴趣的扩展。这通常是file- 方案,但对于自定义文件系统提供程序,会出现更多方案,例如ftp或ssh。
...
"activationEvents": [
"onFileSystem:sftp"
]
...
onView
每当 VS Code 侧边栏中展开指定 id 的视图时,就会发出此激活事件,并激活感兴趣的扩展(扩展或源代码管理是内置视图的示例)。
只要具有 id 的视图nodeDependencies可见,就会触发下面的激活事件:
...
"activationEvents": [
"onView:nodeDependencies"
]
...
注意
注意:从 VS Code 1.74.0 开始,您的扩展贡献的视图不需要相应的onView激活事件声明即可激活您的扩展。
onUri
每当打开该扩展的系统范围 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 内部人员)
onWebviewPanel
每当 VS Code 需要恢复具有匹配的webview时,就会发出此激活事件,并且将激活感兴趣的扩展viewType。
例如,下面的声明onWebviewPanel:
"activationEvents": [
"onWebviewPanel:catCoding"
]
当 VS Code 需要恢复 viewType: 的 webview 时,将导致扩展被激活catCoding。viewType 在调用中设置window.createWebviewPanel,您将需要另一个激活事件(例如 onCommand)来最初激活您的扩展并创建 Web 视图。
onCustomEditor
每当 VS Code 需要创建具有匹配的自定义编辑器时,就会发出此激活事件,并且将激活感兴趣的扩展viewType。
例如,下面的声明onCustomEditor:
"activationEvents": [
"onCustomEditor:catCustoms.pawDraw"
]
当 VS Code 需要使用 viewType: 恢复自定义编辑器时,将导致扩展被激活catCustoms.pawDraw。viewType 在customEditors贡献点中设置并绑定到具有 的提供者registerCustomEditorProvider。
注意
注意:从 VS Code 1.74.0 开始,您的扩展贡献的自定义编辑器不需要相应的onCustomEditor激活事件声明即可激活您的扩展。
onAuthenticationRequest
authentication.getSession()每当扩展请求具有匹配的身份验证会话(通过 API)时,就会发出此激活事件,并且将激活感兴趣的扩展providerId。
例如,下面的声明onAuthenticationRequest:
"activationEvents": [
"onAuthenticationRequest:github"
]
AuthenticationSession当 VS Code 需要检索of 类型时,将导致扩展被激活github。
注意
注意:从 VS Code 1.74.0 开始,您的扩展提供的身份验证提供程序不需要相应的onAuthenticationRequest激活事件声明来激活您的扩展。
onStartupFinished
此激活事件将在VS Code 启动后一段时间发出,并且感兴趣的扩展将被激活。这与激活事件类似*,但不会减慢 VS Code 的启动速度。*目前,此事件在所有激活的扩展完成激活后发出。
...
"activationEvents": [
"onStartupFinished"
]
...
Start up
*每当 VS Code 启动时,都会发出激活事件,并且会激活感兴趣的扩展。
注意
注意:为了确保良好的用户体验,请仅当其他激活事件组合在您的用例中不起作用时,才请在您的扩展中使用此激活事件。
...
"activationEvents": [
"*"
]
...
注意
注意:一个扩展可以监听多个激活事件,这比监听"*".