@@ -23,6 +23,12 @@ import kotlinx.coroutines.flow.Flow
2323import kotlinx.coroutines.flow.cancellable
2424import kotlin.io.path.createDirectories
2525import kotlin.io.path.exists
26+ import com.intellij.openapi.application.ApplicationManager
27+ import com.intellij.openapi.command.WriteCommandAction
28+ import com.intellij.openapi.fileEditor.FileEditorManager
29+ import com.intellij.openapi.fileEditor.FileEditor
30+ import com.intellij.openapi.editor.ScrollType
31+ import com.intellij.openapi.vfs.LocalFileSystem
2632
2733class DomainDictGenerateAction : AnAction () {
2834 init {
@@ -47,21 +53,35 @@ class DomainDictGenerateAction : AnAction() {
4753
4854 logger<DomainDictGenerateAction >().debug(" Prompt: $prompt " )
4955
50- val result = StringBuilder ()
51- val stream: Flow <String > = LlmFactory .create(project).stream(prompt, " " )
52- stream.cancellable().collect {
53- result.append(it)
54- }
55-
56- val dict = result.toString()
57-
5856 val file = promptDir.resolve(" domain.csv" ).toFile()
5957 if (! file.exists()) {
6058 file.createNewFile()
6159 }
6260
61+ val fileEditorManager = FileEditorManager .getInstance(project)
62+ var editors: Array <FileEditor > = emptyArray()
63+ ApplicationManager .getApplication().invokeAndWait {
64+ val virtualFile = LocalFileSystem .getInstance().refreshAndFindFileByIoFile(file)
65+ if (virtualFile != null ) {
66+ editors = fileEditorManager.openFile(virtualFile, true )
67+ fileEditorManager.setSelectedEditor(virtualFile, " text-editor" )
68+ }
69+ }
70+
71+ val editor = fileEditorManager.selectedTextEditor
72+ val stream: Flow <String > = LlmFactory .create(project).stream(prompt, " " )
73+ val result = StringBuilder ()
74+
75+ stream.cancellable().collect { chunk ->
76+ result.append(chunk)
77+ WriteCommandAction .writeCommandAction(project).compute<Any , RuntimeException > {
78+ editor?.document?.setText(result.toString())
79+ editor?.caretModel?.moveToOffset(editor?.document?.textLength ? : 0 )
80+ editor?.scrollingModel?.scrollToCaret(ScrollType .RELATIVE )
81+ }
82+ }
83+
6384 AutoDevStatusService .notifyApplication(AutoDevStatus .Done )
64- file.writeText(dict)
6585 } catch (e: Exception ) {
6686 AutoDevStatusService .notifyApplication(AutoDevStatus .Error )
6787 e.printStackTrace()
0 commit comments