激活事件
激活事件是您在package.json
的activationEvents
字段中声明的一组JSON。扩展清单。当激活事件发生时,您的扩展将被激活。以下是所有可用的激活事件列表:
onAuthenticationRequest
onChatParticipant
onCommand
onCustomEditor
onDebug
onEditSession
onFileSystem
onIssueReporterOpened
onLanguage
onLanguageModelTool
onNotebook
onOpenExternalUri
onRenderer
onSearch
onStartupFinished
onTaskType
onTerminalProfile
onUri
onView
onWalkthrough
onWebviewPanel
workspaceContains
*
我们还提供了package.json
扩展清单中所有字段的参考。
onLanguage
每当解析为某种语言的文件被打开时,此激活事件将被发出,并且感兴趣的扩展将被激活。
"activationEvents": [
"onLanguage:python"
]
onLanguage
事件接受一个 语言标识符 值。
可以在activationEvents
数组中通过单独的onLanguage
条目声明多种语言。
"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
激活事件:
onDebugAdapterProtocolTracker
onDebugAdapterProtocolTracker
在即将启动具有特定类型的调试会话并且可能需要调试协议跟踪器时发出。
onDebugDynamicConfigurations
此激活事件在调用DebugConfigurationProvider
的provideDebugConfigurations
方法之前发出,以在用户请求时提供动态调试配置,例如通过“选择并开始调试”命令通过UI请求。
此激活事件的存在用作扩展提供动态调试配置的信号。
onDebugInitialConfigurations
此激活事件在调用DebugConfigurationProvider
的provideDebugConfigurations
方法以提供初始调试配置之前发出,例如每当需要创建launch.json
时。
onDebugResolve
onDebugResolve:type
在调用指定类型的 DebugConfigurationProvider
的 resolveDebugConfiguration
方法之前触发。
经验法则: 如果调试扩展的激活是轻量级的,使用 onDebug
。如果它是重量级的,根据 DebugConfigurationProvider
是否实现了相应的方法 provideDebugConfigurations
和/或 resolveDebugConfiguration
,使用 onDebugInitialConfigurations
和/或 onDebugResolve
。有关这些方法的更多详细信息,请参见 使用 DebugConfigurationProvider。
workspaceContains
workspaceContains:path
会在打开一个文件夹并且该文件夹包含至少一个与 glob 模式 匹配的文件时发出,感兴趣扩展将被激活。
"activationEvents": [
"workspaceContains:**/.editorconfig"
]
onFileSystem
onFileSystem:scheme
会在读取特定scheme的文件或文件夹时发出,并且感兴趣的扩展将被激活。这通常是file
-scheme,但通过自定义文件系统提供者,更多的scheme会出现,例如ftp
或ssh
。
"activationEvents": [
"onFileSystem:sftp"
]
onView
每当在VS Code侧边栏中展开指定ID的视图时,都会发出此激活事件,并且感兴趣的扩展将被激活。内置视图不会发出激活事件。
每当带有 nodeDependencies
id 的视图可见时,下面的激活事件将触发:
"activationEvents": [
"onView:nodeDependencies"
]
注意: 从 VS Code 1.74.0 开始,由您的扩展贡献的视图不再需要相应的
onView
激活事件声明来激活您的扩展。
onUri
每当打开该扩展的系统范围的Uri时,都会发出此激活事件,并且感兴趣的扩展将被激活。Uri方案固定为vscode
或vscode-insiders
。Uri的授权必须是扩展的标识符。Uri的其余部分是任意的。
"activationEvents": [
"onUri"
]
如果 vscode.git
扩展定义了 onUri
作为激活事件,它将在以下任何 Uri 打开时被激活:
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 Insiders)
onWebviewPanel
每当VS Code需要恢复具有匹配viewType
的webview时,将发出此激活事件,并且感兴趣的扩展将被激活。
例如,下面的onWebviewPanel
声明:
"activationEvents": [
"onWebviewPanel:catCoding"
]
当VS Code需要恢复一个具有viewType: catCoding
的webview时,将导致扩展被激活。viewType在调用window.createWebviewPanel
时设置,并且您需要另一个激活事件(例如,onCommand)来初始激活您的扩展并创建webview。
onCustomEditor
每当VS Code需要创建一个具有匹配viewType
的自定义编辑器时,此激活事件将被发出,感兴趣的扩展将被激活。
例如,下面的onCustomEditor
声明:
"activationEvents": [
"onCustomEditor:catCustoms.pawDraw"
]
当VS Code需要恢复一个具有viewType: catCustoms.pawDraw
的自定义编辑器时,将导致扩展被激活。viewType在customEditors
贡献点中设置,并通过registerCustomEditorProvider
绑定到一个提供者。
注意: 从 VS Code 1.74.0 开始,由您的扩展贡献的自定义编辑器不再需要相应的
onCustomEditor
激活事件声明来激活您的扩展。
onAuthenticationRequest
每当扩展程序请求具有匹配providerId
的认证会话(通过authentication.getSession()
API)时,将发出此激活事件,并且感兴趣的扩展程序将被激活。
例如,下面的onAuthenticationRequest
声明:
"activationEvents": [
"onAuthenticationRequest:github"
]
将导致扩展在VS Code需要检索类型为github
的AuthenticationSession
时被激活。
注意: 从 VS Code 1.74.0 开始,由您的扩展提供的身份验证提供程序不再需要相应的
onAuthenticationRequest
激活事件声明来激活您的扩展。
onStartupFinished
此激活事件在VS Code启动后一段时间发出,感兴趣的扩展将被激活。这与*
激活事件类似,但不会减慢VS Code的启动速度。目前,此事件在所有*
激活的扩展完成激活后发出。
"activationEvents": [
"onStartupFinished"
]
onTaskType
onTaskType:type
每当需要列出或解决某种类型的任务时,就会发出。
"activationEvents": [
"onTaskType":"npm"
]
注意: 从 VS Code 1.76.0 开始,由您的扩展贡献的任务不再需要相应的
onTaskType
激活事件声明来激活您的扩展。
onEditSession
onEditSession:scheme
在使用给定方案访问编辑会话时发出。
"activationEvents": [
"onEditSession:file"
]
onSearch
onSearch:scheme
在具有给定方案的文件夹中开始搜索时发出。
"activationEvents": [
"onSearch:file"
]
onOpenExternalUri
每当打开外部URI(如http或https链接)时发出的激活事件。
"activationEvents": [
"onOpenExternalUri"
]
onNotebook
onNotebook:type
在打开指定的笔记本文档类型时发出。
"activationEvents": [
"onNotebook:jupyter-notebook",
"onNotebook:interactive"
]
onRenderer
onRenderer:id
在使用笔记本输出渲染器时发出。
"activationEvents": [
"onRenderer:ms-toolsai.jupyter-renderers"
]
onTerminalProfile
onTerminalProfile:id
在启动特定终端配置文件时发出。
"activationEvents": [
"onTerminalProfile:terminalTest.terminal-profile"
]
onWalkthrough
onWalkthrough:id
在打开指定的演练时发出。
"activationEvents": [
"onWalkthrough:nodejsWelcome"
]
onIssueReporterOpened
当问题报告器被打开时(例如,通过使用帮助:报告问题),会发出此激活事件。
"activationEvents": [
"onIssueReporterOpened"
]
onChatParticipant
当指定的聊天参与者被调用时发出的激活事件。
"activationEvents": [
"onChatParticipant:my-chat-participant"
]
onLanguageModelTool
当调用指定的语言模型工具时发出的激活事件。
"activationEvents": [
"onChatParticipant:my-language-model-tool"
]
启动
每当 VS Code 启动时,*
激活事件会被发出,感兴趣的扩展将被激活。
注意:为了确保良好的用户体验,请仅在您的使用场景中没有其他激活事件组合有效时,在您的扩展中使用此激活事件。
"activationEvents": [
"*"
]
注意: 扩展可以监听多个激活事件,这比监听
"*"
更可取。
注意: 扩展必须从其主模块导出一个
activate()
函数,并且当任何指定的激活事件被触发时,VS Code将仅调用一次该函数。此外,扩展应该从其主模块导出一个deactivate()
函数,以在VS Code关闭时执行清理任务。如果清理过程是异步的,扩展必须从deactivate()
返回一个Promise。如果清理是同步运行的,扩展可以从deactivate()
返回undefined
。