ZH

IDE 插件

JumPHP IDE 可以用 PHP 编写的插件来扩展。插件可以添加:

  • 操作(菜单、Find Action、快捷键);
  • 工具窗口;
  • 运行配置;
  • 代码补全和问题(输入时加下划线);
  • 给 Claude 的工具。

插件在桌面版 IDE 中运行。

安装插件

在 IDE 中打开 Tools › Plugins…,可以看到:

  • jumphp.net 上:搜索插件,然后点 Install。有新版本时,按钮会变成 Update。
  • Install from a Folder…:安装一个插件文件夹。
  • 已安装插件的列表:可以启用、停用或移除它们。

更新:IDE 在启动后不久以及之后每 6 小时检查一次 jumphp.net。通知会提供 Update;开启 Update plugins automatically 后会自动安装。新版本在下次启动时生效。

插件是以你的权限运行的 PHP:只安装你信任的插件。

创建插件

bin/jumphp plugin:new todo-finder "TODO Finder"
bin/jumphp install todo-finder
bin/jumphp test todo-finder

也可以在 IDE 中使用 New Project › IDE plugin。

插件的类 src/TodoPlugin.php 负责添加它带来的功能:

public function activate(Api $ide): void
{
    $ide->action('count', 'Count the TODOs', fn (EditorState $at) => substr_count($at->text, 'TODO') . ' TODO', ['kbd' => 'Ctrl+Alt+T']);
    $ide->toolWindow('todos', 'TODOs', fn () => Ui::column(
        Ui::list(array_map(fn ($t) => Ui::item($t['text'], fn () => $ide->openFile($t['path'], $t['line'])), $this->todos())),
    ));
    $ide->diagnostics('*.php', fn (string $path, string $text) => $this->fixmes($text));
}
  • 工具窗口用 PHP 由简单元素构成:文本、按钮、列表、输入框、复选框。IDE 用自己的风格绘制它们。
  • 点击和用户的其他操作会回调你的 PHP。
  • 测试(PluginTestCase)在没有窗口的情况下使用插件:执行操作、读取窗口、在其中点击、请求代码补全。

试用方法:Tools › Plugins…,然后点击项目插件旁的 Install in the IDE。

给 Claude 的工具

IDE 为它的 Claude 提供一个 MCP 服务器 jumphp-ide。Claude 用它来操作 IDE:打开文件、运行测试、调试。插件可以向其中添加自己的工具:

$ide->mcpTool('list_todos', 'The TODO comments of the project: path, line, text.',
    fn (array $args) => $this->todos($args['path'] ?? ''),
    ['path' => ['type' => 'string', 'description' => 'only under this folder']]);

Claude 看到的工具名为 mcp__jumphp-ide__plugin_todo_finder_list_todos。Claude 根据描述选择工具:写清它返回什么、何时使用。工具在 IDE 内以 PHP 运行,绝不能阻塞。

发布到 jumphp.net

在 Tools › Plugins… 中,点击项目插件旁的 Publish on jumphp.net。需要先登录。插件随后会出现在插件页面上。

  • 第一个发布某个 ID 的账户成为它的所有者。
  • 每个版本都会保留。要发布新版本,请提高 composer.json 中的 version。
  • bin/jumphp plugin:pack todo-finder 会生成同样的 .zip。
  • 任何人都可以在插件页面或 IDE 中(Rate…)给插件打 1 到 5 星。公开统计:下载量和评分。作者登录后还能在页面上和 IDE 中(Statistics)看到私有统计(浏览、安装、更新、版本、评分)。