From e0025bd78ba6347fc24bce61d851d6043ffc96fc Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Tue, 22 Apr 2025 13:26:31 +0100 Subject: [PATCH] fix: create lookup in read action (fixes #997) --- .../codegpt/ui/textarea/PromptTextField.kt | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/PromptTextField.kt b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/PromptTextField.kt index 2529a5d9..2da4c959 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/PromptTextField.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/PromptTextField.kt @@ -6,6 +6,7 @@ import com.intellij.codeInsight.lookup.impl.PrefixChangeListener import com.intellij.ide.IdeEventQueue import com.intellij.openapi.Disposable import com.intellij.openapi.application.runInEdt +import com.intellij.openapi.application.runReadAction import com.intellij.openapi.application.runUndoTransparentWriteAction import com.intellij.openapi.components.service import com.intellij.openapi.editor.Editor @@ -47,7 +48,7 @@ class PromptTextField( private val onSubmit: (String) -> Unit ) : EditorTextField(project, FileTypes.PLAIN_TEXT), Disposable { - private val coroutineScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) + private val coroutineScope = CoroutineScope(Dispatchers.Main + SupervisorJob()) private var showSuggestionsJob: Job? = null val dispatcherId: UUID = UUID.randomUUID() @@ -95,13 +96,7 @@ class PromptTextField( } private fun showGroupLookup(editor: Editor, lookupElements: Array) { - val lookup = project.service().createLookup( - editor, - lookupElements, - "", - LookupArranger.DefaultArranger() - ) as LookupImpl - + val lookup = createLookup(editor, lookupElements, "") lookup.addLookupListener(object : LookupListener { override fun itemSelected(event: LookupEvent) { val lookupString = event.item?.lookupString ?: return @@ -153,12 +148,14 @@ class PromptTextField( editor: Editor, lookupElements: Array, searchText: String - ) = LookupManager.getInstance(project).createLookup( - editor, - lookupElements, - searchText, - LookupArranger.DefaultArranger() - ) as LookupImpl + ) = runReadAction { + LookupManager.getInstance(project).createLookup( + editor, + lookupElements, + searchText, + LookupArranger.DefaultArranger() + ) as LookupImpl + } private fun showSuggestionLookup( lookupElements: Array,