Skip to content
微信公众号

激活事件

激活事件是您在扩展清单activationEvents字段中所做的一组 JSON 声明。当激活事件发生时,您的扩展将被激活。以下是所有可用激活事件的列表:package.json

  • onLanguage
  • onCommand
  • onDebug
    • onDebugInitialConfigurations
    • onDebugResolve
  • workspaceContains
  • onFileSystem
  • onView
  • onUri
  • onWebviewPanel
  • onCustomEditor
  • onAuthenticationRequest
  • onStartupFinished
  • *

package.json我们还提供了扩展清单中所有字段的参考。

onLanguage

每当打开解析为某种语言的文件时,就会发出此激活事件,并且将激活感兴趣的扩展。

js
...
"activationEvents": [
    "onLanguage:python"
]
...

该onLanguage事件采用语言标识符值。

onLanguage可以使用数组中的单独条目来声明多种语言activationEvents。

js
"activationEvents": [
    "onLanguage:json",
    "onLanguage:markdown",
    "onLanguage:typescript"
]
...

注意

注意:从 VS Code 1.74.0 开始,您的扩展提供的语言不需要相应的onLanguage激活事件声明即可激活您的扩展。

此外,如果您的扩展程序需要在使用任何语言之前激活,您可以使用通用onLanguage激活事件来确保这一点:

js
"activationEvents": [
    "onLanguage"
]

注意

注意:最佳做法是仅在用户需要您的扩展时才激活。如果您的扩展适用于一部分语言,则用户最好列出该子集,而不是在所有语言上激活。

onCommand

每当调用命令时,都会发出此激活事件,并且将激活感兴趣的扩展:

js
...
"activationEvents": [
    "onCommand:extension.sayHello"
]
...

注意

注意:从 VS Code 1.74.0 开始,您的扩展提供的命令不需要相应的onCommand激活事件声明即可激活您的扩展。

onDebug

在调试会话开始之前,将发出此激活事件并激活感兴趣的扩展:

js
...
"activationEvents": [
    "onDebug"
]
...

这是两个更细粒度的onDebug激活事件:

  • 调试初始配置:onDebugInitialConfigurationsprovideDebugConfigurations在调用的方法之前触发DebugConfigurationProvider。

  • 调试解决:onDebugResolve:type在调用指定类型resolveDebugConfiguration的方法之前触发。DebugConfigurationProvider

workspaceContains

每当打开文件夹并且该文件夹至少包含一个与glob 模式匹配的文件时,就会发出此激活事件,并且将激活感兴趣的扩展。

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

onFileSystem

每当读取特定方案中的文件或文件夹时,就会发出此激活事件,并且将激活感兴趣的扩展。这通常是file- 方案,但对于自定义文件系统提供程序,会出现更多方案,例如ftp或ssh。

js
...
"activationEvents": [
    "onFileSystem:sftp"
]
...

onView

每当 VS Code 侧边栏中展开指定 id 的视图时,就会发出此激活事件,并激活感兴趣的扩展(扩展或源代码管理是内置视图的示例)。

只要具有 id 的视图nodeDependencies可见,就会触发下面的激活事件:

js
...
"activationEvents": [
    "onView:nodeDependencies"
]
...

注意

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

onUri

每当打开该扩展的系统范围 Uri 时,就会发出此激活事件,并且将激活感兴趣的扩展。Uri 方案固定为vscode或vscode-insiders。Uri 权限必须是扩展的标识符。Uri 的其余部分是任意的。

js
...
"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:

js
"activationEvents": [
    "onWebviewPanel:catCoding"
]

当 VS Code 需要恢复 viewType: 的 webview 时,将导致扩展被激活catCoding。viewType 在调用中设置window.createWebviewPanel,您将需要另一个激活事件(例如 onCommand)来最初激活您的扩展并创建 Web 视图。

onCustomEditor

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

例如,下面的声明onCustomEditor:

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

当 VS Code 需要使用 viewType: 恢复自定义编辑器时,将导致扩展被激活catCustoms.pawDraw。viewType 在customEditors贡献点中设置并绑定到具有 的提供者registerCustomEditorProvider。

注意

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

onAuthenticationRequest

authentication.getSession()每当扩展请求具有匹配的身份验证会话(通过 API)时,就会发出此激活事件,并且将激活感兴趣的扩展providerId。

例如,下面的声明onAuthenticationRequest:

js
"activationEvents": [
    "onAuthenticationRequest:github"
]

AuthenticationSession当 VS Code 需要检索of 类型时,将导致扩展被激活github。

注意

注意:从 VS Code 1.74.0 开始,您的扩展提供的身份验证提供程序不需要相应的onAuthenticationRequest激活事件声明来激活您的扩展。

onStartupFinished

此激活事件将在VS Code 启动后一段时间发出,并且感兴趣的扩展将被激活。这与激活事件类似*,但不会减慢 VS Code 的启动速度。*目前,此事件在所有激活的扩展完成激活后发出。

js
...
"activationEvents": [
    "onStartupFinished"
]
...

Start up

*每当 VS Code 启动时,都会发出激活事件,并且会激活感兴趣的扩展。

注意

注意:为了确保良好的用户体验,请仅当其他激活事件组合在您的用例中不起作用时,才请在您的扩展中使用此激活事件。

js
...
"activationEvents": [
    "*"
]
...

注意

注意:一个扩展可以监听多个激活事件,这比监听"*".

本站总访问量次,本站总访客数人次
Released under the MIT License.