我正在为IntelliJ平台开发一个插件。我已经创建了CompletionContributor
的实现,并且已经成功地提出了建议。我目前正在覆盖invokeAutoPopup
方法以触发完成弹出窗口。我正在使用InsertHandler
的实现,在完成选择的插入后立即向文档中添加其他文本。
但是,我想这样做,以便当用户成功插入建议时,立即出现另一个完成弹出提示。例如,在此InsertHandler
(用Kotlin写)中,选择了一种方法后,应立即为他们提供有关该方法的参数的建议:
val handler = InsertHandler<LookupElement> { context: InsertionContext, element: LookupElement ->
val offset = context.tailOffset
context.document.insertString(offset, "()")
context.editor.caretModel.moveToOffset(offset + 1)
TODO("trigger popup")
}
或者在选择一个字段之后,可以立即为他们提供可以在该字段上调用的方法:
val handler = InsertHandler<LookupElement> { context: InsertionContext, element: LookupElement ->
val offset = context.tailOffset
context.document.insertString(offset, ".")
context.editor.caretModel.moveToOffset(offset + 1)
TODO("trigger popup")
}
换句话说,我想这样做,以便在插入建议的文本之后,就好像用户按下了Ctrl+Space
。这可能吗?我是否以正确的方式解决问题?上面的代码中有什么遗漏了重点吗? (欢迎使用Java或Kotlin解决方案。)
答案 0 :(得分:1)
如果自动弹出功能足以满足您的需求,则可以尝试调用com.intellij.codeInsight.AutoPopupController.getInstance(context.project).scheduleAutoPopup(context.editor)
。