激活事件

激活事件是您在 package.jsonactivationEvents 字段中进行的一组 JSON 声明,它们是扩展清单的一部分。当**激活事件**发生时,您的扩展将被激活。以下是所有可用**激活事件**的列表:

我们还提供了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

此激活事件在调用 DebugConfigurationProviderprovideDebugConfigurations 方法之前触发,以便在用户请求动态调试配置时(例如通过 UI 中的“选择并启动调试”命令)提供这些配置。

此激活事件的存在被用作扩展贡献动态调试配置的信号。

onDebugInitialConfigurations

此激活事件在调用 DebugConfigurationProviderprovideDebugConfigurations 方法之前触发,以便提供初始调试配置,例如在需要创建 launch.json 文件时。

onDebugResolve

onDebugResolve:type 在调用指定类型的 DebugConfigurationProviderresolveDebugConfiguration 方法之前触发。

经验法则: 如果调试扩展的激活是轻量级的,请使用 onDebug。如果它是重量级的,则根据 DebugConfigurationProvider 是否实现了相应的 provideDebugConfigurations 和/或 resolveDebugConfiguration 方法,使用 onDebugInitialConfigurations 和/或 onDebugResolve。有关这些方法的更多详细信息,请参阅使用 DebugConfigurationProvider

workspaceContains

每当打开一个文件夹且该文件夹中包含至少一个匹配glob 模式的文件时,workspaceContains:path 就会触发,并且相关的扩展将被激活。

"activationEvents": [
    "workspaceContains:**/.editorconfig"
]

onFileSystem

每当从特定方案读取文件或文件夹时,onFileSystem:scheme 就会触发,并且相关的扩展将被激活。这通常是 file 方案,但对于自定义文件系统提供程序,会有更多的方案,例如 ftpssh

"activationEvents": [
    "onFileSystem:sftp"
]

onView

每当 VS Code 侧边栏中指定 ID 的视图被展开时,此激活事件就会触发,并且相关的扩展将被激活。内置视图不会触发激活事件。

当 ID 为 nodeDependencies 的视图可见时,以下激活事件将被触发。

"activationEvents": [
    "onView:nodeDependencies"
]

注意:从 VS Code 1.74.0 开始,您的扩展所贡献的视图不再需要相应的 onView 激活事件声明来激活您的扩展。

onUri

每当打开该扩展的系统级 Uri 时,此激活事件就会触发,并且相关的扩展将被激活。Uri 方案固定为 vscodevscode-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 需要恢复 viewTypecatCoding 的网页视图时激活扩展。viewType 是在调用 window.createWebviewPanel 时设置的,您将需要另一个激活事件(例如 onCommand)来最初激活您的扩展并创建网页视图。

onCustomEditor

每当 VS Code 需要创建具有匹配 viewType自定义编辑器时,此激活事件就会触发,并且相关的扩展将被激活。

例如,下面的 onCustomEditor 声明:

"activationEvents": [
    "onCustomEditor:catCustoms.pawDraw"
]

将导致当 VS Code 需要恢复 viewTypecatCustoms.pawDraw 的自定义编辑器时激活扩展。viewType 是在customEditors 贡献点中设置的,并通过 registerCustomEditorProvider 绑定到一个提供程序。

注意:从 VS Code 1.74.0 开始,您的扩展所贡献的自定义编辑器不再需要相应的 onCustomEditor 激活事件声明来激活您的扩展。

onAuthenticationRequest

每当扩展通过 authentication.getSession() API 请求具有匹配 providerId 的认证会话时,此激活事件就会触发,并且相关的扩展将被激活。

例如,下面的 onAuthenticationRequest 声明:

"activationEvents": [
    "onAuthenticationRequest:github"
]

将导致当 VS Code 需要检索类型为 githubAuthenticationSession 时激活扩展。

注意:从 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

当打开指定的导览时,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

© . This site is unofficial and not affiliated with Microsoft.