跳转到主要内容
每个插件都是根目录下带 plugin.toml 的文件夹。清单说明插件是谁、需要哪个插件 API、代码在哪里(如果有)、什么时候加载、可以做什么,以及向 IDE 贡献了什么。

示例

顶层字段

未知的顶层字段会报错。 所有路径都相对于插件包目录,且不能跳出该目录。清单作为整体校验:只要有一个贡献无效,整个插件都不会安装或加载。IDE 不认识的贡献类型(来自更新的 API)会被跳过并给出警告。

分类

languages、themes、icon-themes、linters(检查器和格式化工具)、vcs、ai、frameworks、tools、other。 不写 categories 时,贡献了主题、图标主题或语言的插件会归入对应分类,其他插件归入 other。IDE 不认识的分类,以及已认识的前三个之后的分类都会被忽略;openidea-plugin check 会对这两种情况给出警告。

激活

代码按需加载。不写 activation 时,代码在第一次执行插件命令时加载。 重复的事件会报错。部分事件类型需要更新的 API:on-event:files-changed 需要 ^1.3;file-closed、settings-changed、input-mode-changed、run-exited、terminal-exited 和 content-tab-action 需要 ^1.4。

能力

required 能力在安装时整体同意;optional 能力用户可以逐个拒绝,插件必须能处理缺少它们时返回的 Error::Denied。完整列表及其作用见 权限与能力。

贡献点

每个贡献点是一张表([contributes.settings])或一个表数组([[contributes.commands]])。插件启用后贡献立即生效,不需要等代码加载。 条目 id(命令、视图、主题等)匹配 [a-z0-9][a-z0-9._-]*,不超过 64 个字符。菜单、快捷键和状态栏项只能引用插件自己声明的命令;在 IDE 内部,命令的操作 id 是 plugin.<plugin id>.<command id>。

翻译

插件包用 locales/<tag>.json 文件(fr.json、zh-CN.json)翻译自己的文本,不需要在清单里声明。每个文件把英文原文映射到译文:
IDE 根据当前界面语言选用目录(先精确匹配 tag,再匹配语言,再匹配变体,例如 zh 可以用 zh-TW),应用到清单声明的标题、分类、标签、提示,以及视图显示的文本。插件自己拼出来的文本(通知、错误信息、html 内容)不会被翻译:生成这些文本时读取 host::locale()。如果目录不是“字符串到字符串”的 JSON 对象,openidea-plugin check 会拒绝它。

0.1 格式

旧的 0.1 格式清单(openidea-api = "0.1"、permissions = [...])仍能加载:其 permissions 视为 required 能力,贡献照常生效。但 0.1 的代码不再运行,需要用 1.x SDK 重新构建,并改用 engines.openidea 和 [capabilities]。同一个清单不能混用两种格式。

检查清单

check 按安装时完全相同的规则校验清单、所有贡献和组件。见 测试与调试。