【发布时间】:2018-07-17 18:59:35
【问题描述】:
我正在为 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 的解决方案。)
【问题讨论】:
标签: intellij-idea intellij-plugin