激活事件
激活事件写在 package.json 的 activationEvents 里。事件发生时,声明了它的扩展才会被加载,然后调用一次 activate。
常见事件
| 事件 | 何时触发 |
|---|---|
onLanguage:python | 打开解析成该语言的文件 |
onLanguage | 任意语言被使用前。范围很大,能收窄就收窄 |
onCommand:ext.sayHello | 该命令被调用 |
onView:myView | 指定视图被展开 |
onUri | 打开 vscode://发布者.扩展名/... |
onWebviewPanel:viewType | 需要恢复这个 viewType 的网页面板 |
onCustomEditor:viewType | 需要创建或恢复自定义编辑器 |
onFileSystem:sftp | 读取该 scheme 的文件或文件夹 |
workspaceContains:**/.editorconfig | 打开的文件夹里有匹配 glob 的文件 |
onDebug | 调试会话开始前。重的调试扩展应改用更细的 onDebugInitialConfigurations / onDebugResolve |
onTaskType:npm | 需要列出或解析该类型任务 |
onNotebook:jupyter-notebook | 打开指定笔记本类型 |
onTerminal:bash | 打开指定 shell 类型的终端 |
onAuthenticationRequest:github | 有人向该认证提供方要会话 |
onStartupFinished | 启动完成之后。比 * 晚,不拖启动 |
* | 编辑器一启动就激活。官方要求只有没有任何别的组合能满足时才用 |
另外还有 onChatParticipant、onLanguageModelTool、onWalkthrough、onSearch、onRenderer、onEditSession、onOpenExternalUri、onIssueReporterOpened 等,名字和触发点是对应的。
1.74 之后的隐式激活
从 1.74.0 起,扩展自己贡献的这些能力不再强制手写激活事件:
onCommand(贡献了commands)onLanguage(贡献了languages)onView(贡献了views)onCustomEditoronAuthenticationRequest(贡献了authentication)
onTaskType 从 1.76.0 起,对自己贡献的任务同样可以省略。
隐式激活只管「你在 contributes 里声明过的那些 ID」。下面这些仍然要自己写:
onStartupFinished、*、workspaceContains、onUri、onFileSystemonWebviewPanel:第一次打开通常靠命令激活,重启后要靠它把面板恢复回来- 监听别人扩展的命令或语言
activationEvents 可以是空数组。面向 1.74 以前的 engines.vscode 时,命令仍要写 onCommand:...。