跳到主要内容

贡献点

贡献点是 package.json 里 contributes 下的 JSON 声明。扩展用它们告诉 VS Code:我要加命令、菜单、语言、视图、主题、调试器等。声明本身不执行代码。需要行为时,再在 activate 里注册对应实现。

官方列出的贡献点​

authentication、breakpoints、chatAgents、chatInstructions、chatPromptFiles、chatSkills、colors、commands、configuration、configurationDefaults、customEditors、debuggers、grammars、icons、iconThemes、jsonValidation、keybindings、languages、languageModelChatProviders、languageModelTools、menus、problemMatchers、problemPatterns、productIconThemes、resourceLabelFormatters、semanticTokenModifiers、semanticTokenScopes、semanticTokenTypes、snippets、submenus、taskDefinitions、terminal、themes、typescriptServerPlugins、views、viewsContainers、viewsWelcome、walkthroughs。

最常用的几类​

贡献点作用
commands命令 ID、标题、分类、图标。用户能从命令面板看见它
menus把命令挂到右键、编辑器标题、视图标题、命令面板
keybindings默认快捷键
configuration设置项的类型、默认值、说明
languages语言 ID、扩展名、别名
grammarsTextMate 语法,负责着色
snippets代码片段
views / viewsContainers侧栏或面板里的树、网页视图
themes / iconThemes颜色主题、文件图标主题
debuggers调试类型,真正的调试器还要实现调试适配器
taskDefinitions自定义任务类型,用户能写进 tasks.json
customEditors用自定义界面打开某种文件
authentication认证提供方的 id 和显示名
languageModelTools给聊天模型调用的工具,实现用 vscode.lm.registerTool

同一语言的语法、片段、语言功能要用同一个语言 ID,VS Code 才能把它们算到同一种文件上。

和激活的关系​

很多贡献点在被使用时会发出激活事件。例如调用贡献出来的命令会发出 onCommand:${command},展开贡献出来的视图会发出 onView:${viewId}。1.74 之后这些事件可以不手写,但贡献点本身仍然要写,否则界面上没有入口。

参考​