如何在 IntelliJ 插件上使用代码完成?

How to use Code Completion on IntelliJ Plugin?

我正在开发 IntelliJ 上的插件。 我有这样的问题:

我们都知道,如果我们输入关键字,IntelliJ 将使用其代码完成功能为我们提供如图所示的提示。

现在我在IntelliJ 上的插件中有一个JTextField,它需要这样的功能:当我向JTextField 中填充一些单词时,它会提供如图所示的代码完成提示。 IntelliJ 是否有一些 open api 可以做到这一点?我做了很多工作来研究如何做到这一点。但一无所获。

对于 JTextField,IntelliJ IDEA 没有这样的 API。 IDEA 的完成需要 IDEA 的编辑器才能工作。您可以使用 EditorFactory 创建一个(不要忘记在不需要后从同一个 EditorFactory 释放它)。如果您的编辑器是 one-line,您可以考虑改用 EditorTextField,这会让事情变得更容易。两者都有 getComponent() 方法,return 可以将常用的 Swing 组件嵌入到您的 GUI 中。

然后您可以 show/hide/handle 使用 LookupManager 方法手动弹出,或者依靠通用的 IDE 自动完成机制来完成很多事情。但后者要求您将编辑器的文档与 PsiFile(可能是纯文本文件,请参阅 PsiFileFactory.createFileFromText)相关联,并创建一个 CompletionContributor,它会根据文件中的位置提供建议变体。