LivePlugin社区资源:最佳实践、示例插件和常见问题解答

【免费下载链接】live-plugin IntelliJ plugin for writing IntelliJ plugins at runtime ⚡️ 【免费下载链接】live-plugin 项目地址: https://gitcode.com/gh_mirrors/li/live-plugin

LivePlugin是一款专为IntelliJ IDE设计的插件,它允许开发者使用Kotlin和Groovy在运行时创建和测试插件,无需繁琐的项目配置和IDE重启,极大地提升了插件开发效率。

🌟 核心优势与使用场景

LivePlugin为开发者带来了诸多便利,主要体现在以下几个方面:

  • 极简设置:无需为插件开发单独设置项目,直接在IntelliJ IDE中即可进行开发
  • 快速反馈:插件在IDE的同一JVM实例中(重新)加载,无需重启IDE
  • 实用API:提供了小型API,包含常见IDE API的入口点

它的实用场景包括:

  • 项目特定工作流自动化
  • 将shell脚本与IDE集成
  • 原型插件开发,实验IntelliJ API

🚀 最佳实践指南

插件开发基础

开始使用LivePlugin时,建议先确保"hello world"示例能正常工作:

  1. 在"Live Plugins"工具窗口中选择"hello-world"插件,点击"Run"按钮执行插件(使用"Run Plugin"操作,快捷键为ctrl+shift+Lalt+C, alt+E)。它应该会显示一条消息。

LivePlugin Hello World示例代码

  1. plugin.groovy/plugin.kts中做一个小修改,然后重新运行插件。第二次运行时,插件的先前版本将在代码再次求值之前被卸载。

  2. 修改plugin.groovy/plugin.kts文件,使其编译/运行失败。你应该会在"Run"工具窗口中看到错误消息。

插件管理技巧

LivePlugin的工具窗口提供了多种设置选项,合理使用这些设置可以提高开发效率:

LivePlugin工具窗口

  • Run Plugins on IDE Start:在IDE启动时运行所有插件
  • Run Project Specific Plugins:当项目打开时运行.live-plugins项目目录中的所有插件,并在项目关闭时卸载它们
  • Add LivePlugin and IDE Jars to Project:将LivePlugin和IDE的jar添加到当前项目作为库(请参见"Project Settings -> Modules")

对于Kotlin插件,单个plugin.kts文件应该已经具有自动完成和代码导航功能。多个Kotlin文件目前不会被高亮显示(参见相关YouTrack问题),但应该可以编译和运行。

IntelliJ API学习资源

要深入学习IntelliJ API,可以参考以下资源:

💡 示例插件集合

LivePlugin提供了丰富的示例插件,涵盖各种常见功能。这些示例可以通过"Live Plugins"工具窗口中的"Plus"按钮("Add Plugin"操作)添加。

基础示例

Groovy版Hello World

import static liveplugin.PluginUtil.show
show("Hello world") // 显示带有"Hello world"文本的气球通知弹出窗口

Kotlin版插入新行操作

import com.intellij.openapi.actionSystem.AnActionEvent
import liveplugin.*

// 在当前行上方插入新行的操作
registerAction(id = "Insert New Line Above", keyStroke = "ctrl alt shift ENTER") { event: AnActionEvent ->
    val project = event.project ?: return@registerAction
    val editor = event.editor ?: return@registerAction
    executeCommand(editor.document, project) { document ->
        val caretModel = editor.caretModel
        val lineStartOffset = document.getLineStartOffset(caretModel.logicalPosition.line)
        document.insertString(lineStartOffset, "\n")
        caretModel.moveToOffset(caretModel.offset + 1)
    }
}
show("Loaded 'Insert New Line Above' action<br/>Use 'ctrl+alt+shift+Enter' to run it")

高级示例

项目中还提供了更多高级示例,包括:

  • ide-actions:IDE操作相关插件
  • java-inspection:Java代码检查插件
  • java-intention:Java意图操作插件
  • kotlin-inspection:Kotlin代码检查插件
  • kotlin-intention:Kotlin意图操作插件
  • multiple-src-files:多源文件插件
  • popup-menu:弹出菜单插件
  • text-editor:文本编辑器相关插件

这些示例位于plugin-examples/groovy/plugin-examples/kotlin/目录下,可以作为开发自定义插件的良好起点。

❓ 常见问题解答

开发问题

Q: 如何处理编译或运行错误?

A: 如果插件代码编译或运行失败,错误消息会显示在"Run"工具窗口中。仔细检查错误信息,修正代码后重新运行插件即可。

Q: 为什么会出现类加载错误,例如"expected type kotlin.String but was kotlin.String"?

A: 这是由于Kotlin和IntelliJ中存在完全相同的全限定名类,导致类加载器加载了错误的类。LivePlugin通过将Kotlin编译器API包装在单独的模块中来解决这个问题,详细信息可以参考kotlin-compiler-wrapper/readme.md

使用问题

Q: 如何在IDE启动时自动运行插件?

A: 在"Live Plugins"工具窗口中勾选"Run Plugins on IDE Start"选项,这样所有插件将在IDE启动时自动运行。

Q: 如何为项目添加特定插件?

A: 可以使用"Run Project Specific Plugins"选项,它会在项目打开时运行.live-plugins项目目录中的所有插件,并在项目关闭时卸载它们。

Q: 如何获得插件代码的自动完成和代码导航功能?

A: 对于Kotlin插件,单个plugin.kts文件应该已经具有自动完成和代码导航功能。对于Groovy插件,可以使用"Add LivePlugin and IDE Jars to Project"选项,将相关jar添加到项目中作为库。

📚 进一步学习资源

当你的插件已经成熟,你可以将其迁移到适当的插件项目中,仍然使用live plugin进行重新加载,然后可能将其转换为动态插件

如果有任何问题或建议,请随时报告问题(即使只是一个问题,也可以报告)。

【免费下载链接】live-plugin IntelliJ plugin for writing IntelliJ plugins at runtime ⚡️ 【免费下载链接】live-plugin 项目地址: https://gitcode.com/gh_mirrors/li/live-plugin

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐