了解JetBrains URL Scheme

最近在使用click-to-component时发现并没支持JB IDE的集成,因此花了下时间集成支持了下。这里mark下JB的URL Scheme支持情况

JB IDE本身并没有提供直接的URL Scheme支持,调研后发现方案有如下2个。

JetBrains Toolbox

toolbox安装后即会提供JB 各个IDE支持。

支持IDE清单

  1. IntelliJ IDEA
  2. AppCode
  3. CLion
  4. PyCharm
  5. PhpStorm
  6. RubyMine
  7. WebStorm
  8. Rider
  9. GoLand
  10. RustRover

动作支持如下

  1. checkout某个仓库,使用对应对应IDE打开
1
jetbrains://${toolTag}/checkout/git?checkout.repo=${cloneUrl}&idea.required.plugins.id=Git4Idea
  1. 打开某仓库,某文件及移动到对应行列位置
1
jetbrains://${toolTag}/navigate/reference?project=${project}&path=${filePath}:${lineIndex}:${columnIndex}

具体的URL Scheme规则见仓库jetbrains-url-schemes

该方案的缺点是没有提供直接打开某个文件的功能。

IDE Remote Control

JB官方有提供官方的IDE Remote Control支持,本质即IDE提供了控制Server,通过HTTP API可以操作IDE。

API规范

1
2
3
4
5
6
7
8
9
10
11
* @apiExample {curl} Absolute path
* curl http://localhost:63342/api/file//absolute/path/to/file.kt
*
* @apiExample {curl} Relative path
* curl http://localhost:63342/api/file/relative/to/module/root/path/to/file.kt
*
* @apiExample {curl} With line and column
* curl http://localhost:63342/api/file/relative/to/module/root/path/to/file.kt:100:34
*
* @apiExample {curl} Query parameters
* curl http://localhost:63342/api/file?file=path/to/file.kt&line=100&column=34

具体详情见JB官方commit

该方案的缺点是IDE需要安装IDE Remote Control插件。且因为是HTTP服务,可能与本地端口冲突,需要手动修改。

https://static.1991421.cn/2024/2024-12-25-111637.jpeg

写在最后

上述方案2个均可以实现点击文件跳转,但均存在不足,期待后续JB IDE可以直接提供完善的URL Scheme支持。

相关文档