插件开发:如何将参数化的内容插入到类似于Live Templates的编辑器中?
Plugin development: how to insert parameterized content into the editor similar to Live Templates?
我正在开发一种特定领域的自定义语言作为 Intellij IDEA 插件。
我创建了一个意图,允许用户修复代码中的错误。
我可以在编辑器中更新内容,然后将插入符号放在我希望用户添加一些文本的位置。但是,用户需要在多个位置添加文本,我想自动将插入符号一个接一个地放置在所有位置,类似于使用 Live Templates 功能时的方式,添加 Live带有参数的模板。
使用实时模板时,它看起来像这样:
注意红框。插入符号会自动到达那里,当我完成输入并单击回车时 - 它会移动到下一个参数,并且那里会出现红色框。
请注意,在我正在实施的场景中,文本是完全动态的。如果可以即时创建临时临时实时模板,那么这可能是一个可行的解决方案,但否则我需要另一种方法来控制此机制。
有谁知道如何实现它?
可以即时创建实时模板。最方便的 API 是 TemplateBuilder,请参阅它的 javadoc。如果您没有可用的 PSI,您可以 assemble 通过仔细构建 TemplateImpl 对象然后使用 TemplateManager#startTemplate 手动创建模板。在 IntelliJ IDEA 社区版代码库中有大量关于这两种情况的示例。
我正在开发一种特定领域的自定义语言作为 Intellij IDEA 插件。
我创建了一个意图,允许用户修复代码中的错误。
我可以在编辑器中更新内容,然后将插入符号放在我希望用户添加一些文本的位置。但是,用户需要在多个位置添加文本,我想自动将插入符号一个接一个地放置在所有位置,类似于使用 Live Templates 功能时的方式,添加 Live带有参数的模板。
使用实时模板时,它看起来像这样:
注意红框。插入符号会自动到达那里,当我完成输入并单击回车时 - 它会移动到下一个参数,并且那里会出现红色框。
请注意,在我正在实施的场景中,文本是完全动态的。如果可以即时创建临时临时实时模板,那么这可能是一个可行的解决方案,但否则我需要另一种方法来控制此机制。
有谁知道如何实现它?
可以即时创建实时模板。最方便的 API 是 TemplateBuilder,请参阅它的 javadoc。如果您没有可用的 PSI,您可以 assemble 通过仔细构建 TemplateImpl 对象然后使用 TemplateManager#startTemplate 手动创建模板。在 IntelliJ IDEA 社区版代码库中有大量关于这两种情况的示例。