激活事件
激活事件是一组 JSON 声明,您可以在 package.json 扩展 清单 的 activationEvents 字段中进行声明。当**激活事件**发生时,您的扩展将被激活。以下是所有可用**激活事件**的列表:
onAuthenticationRequestonChatParticipantonCommandonCustomEditoronDebugonEditSessiononFileSystemonIssueReporterOpenedonLanguageonLanguageModelToolonNotebookonOpenExternalUrionRendereronSearchonStartupFinishedonTaskTypeonTerminalonUrionViewonWalkthroughonWebviewPanelworkspaceContains*
我们还提供了 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
当调用指定类型的 DebugConfigurationProvider 的 resolveDebugConfiguration 方法之前,会触发 onDebugResolve:type。
经验法则:如果调试扩展的激活是轻量级的,请使用 onDebug。如果它是重量级的,请根据 DebugConfigurationProvider 是否实现了相应的方法 provideDebugConfigurations 和/或 resolveDebugConfiguration,使用 onDebugInitialConfigurations 和/或 onDebugResolve。有关这些方法的更多详细信息,请参阅 使用 DebugConfigurationProvider。
workspaceContains
当打开一个文件夹并且该文件夹至少包含一个匹配 glob 模式 的文件时,会发出 workspaceContains:path,并且感兴趣的扩展将被激活。
"activationEvents": [
"workspaceContains:**/.editorconfig"
]
onFileSystem
当读取特定方案(scheme)的文件或文件夹时,会发出 onFileSystem:scheme,并且感兴趣的扩展将被激活。通常是 file 方案,但使用自定义文件系统提供程序时,会引入更多方案,例如 ftp 或 ssh。
"activationEvents": [
"onFileSystem:sftp"
]
onView
当 VS Code 侧边栏中指定 ID 的视图展开时,会发出此激活事件,并且感兴趣的扩展将被激活。内置视图不触发激活事件。
当 ID 为 nodeDependencies 的视图可见时,将触发以下激活事件:
"activationEvents": [
"onView:nodeDependencies"
]
注意:从 VS Code 1.74.0 开始,您的扩展贡献的视图不再需要相应的
onView激活事件声明即可激活您的扩展。
onUri
当 VS Code 需要打开与扩展匹配的系统范围 URI 时,会发出此激活事件。URI 方案固定为 vscode 或 vscode-insiders。URI 授权必须是扩展的标识符。URI 的其余部分是任意的。
"activationEvents": [
"onUri"
]
如果 vscode.git 扩展将 onUri 定义为激活事件,则在打开以下任何 URI 时都会激活它:
vscode://vscode.git/initvscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.gitvscode-insiders://vscode.git/init(针对 VS Code Insiders)
onWebviewPanel
当 VS Code 需要恢复具有匹配 viewType 的 Webview 时,会发出此激活事件,并且感兴趣的扩展将被激活。
例如,以下 onWebviewPanel 的声明:
"activationEvents": [
"onWebviewPanel:catCoding"
]
将导致当 VS Code 需要恢复 catCoding 视图类型的 Webview 时激活扩展。viewType 在调用 window.createWebviewPanel 时设置,您需要另一个激活事件(例如 onCommand)来初始激活您的扩展并创建 Webview。
onCustomEditor
当 VS Code 需要创建具有匹配 viewType 的 自定义编辑器时,会发出此激活事件,并且感兴趣的扩展将被激活。
例如,以下 onCustomEditor 的声明:
"activationEvents": [
"onCustomEditor:catCustoms.pawDraw"
]
将导致当 VS Code 需要恢复 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"
]
onTerminal
当打开具有给定 Shell 类型的特定终端时,会发出 onTerminal:shellType。
"activationEvents": [
"onTerminal:bash"
]
onTerminalProfile
当启动特定终端配置文件时,会发出 onTerminalProfile:id。
"activationEvents": [
"onTerminalProfile:terminalTest.terminal-profile"
]
onTerminalShellIntegration
当具有给定 Shell 类型的终端激活了 Shell 集成时,会发出 onTerminalShellIntegration:shellType。
"activationEvents": [
"onTerminalShellIntegration:bash"
]
onWalkthrough
当打开指定的演练(walkthrough)时,会发出 onWalkthrough:id。
"activationEvents": [
"onWalkthrough:nodejsWelcome"
]
onIssueReporterOpened
打开问题报告者时(例如,通过使用帮助:报告问题),会发出此激活事件。
"activationEvents": [
"onIssueReporterOpened"
]
onChatParticipant
当调用指定的聊天参与者时,会发出此激活事件。
"activationEvents": [
"onChatParticipant:my-chat-participant"
]
onLanguageModelTool
当调用指定的语言模型工具时,会发出此激活事件。
"activationEvents": [
"onLanguageModelTool:my-language-model-tool"
]
启动
当 VS Code 启动时,会发出 * 激活事件,并且感兴趣的扩展将被激活。
注意:为了确保出色的用户体验,请仅在您用例中的其他激活事件组合无效时才在您的扩展中使用此激活事件。
"activationEvents": [
"*"
]
注意:扩展可以监听多个激活事件,这比监听
"*"更可取。
注意:扩展必须从其主模块导出
activate()函数,并且当任何指定的激活事件被发出时,VS Code 将仅调用一次。此外,扩展应该从其主模块导出deactivate()函数以在 VS Code 关闭时执行清理任务。如果清理过程是异步的,扩展必须从deactivate()返回一个 Promise。如果清理是同步执行的,扩展可以从deactivate()返回undefined。