@@ -23,6 +23,12 @@ import kotlinx.coroutines.flow.Flow
23
23
import kotlinx.coroutines.flow.cancellable
24
24
import kotlin.io.path.createDirectories
25
25
import 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
26
32
27
33
class DomainDictGenerateAction : AnAction () {
28
34
init {
@@ -47,21 +53,35 @@ class DomainDictGenerateAction : AnAction() {
47
53
48
54
logger<DomainDictGenerateAction >().debug(" Prompt: $prompt " )
49
55
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
-
58
56
val file = promptDir.resolve(" domain.csv" ).toFile()
59
57
if (! file.exists()) {
60
58
file.createNewFile()
61
59
}
62
60
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
+
63
84
AutoDevStatusService .notifyApplication(AutoDevStatus .Done )
64
- file.writeText(dict)
65
85
} catch (e: Exception ) {
66
86
AutoDevStatusService .notifyApplication(AutoDevStatus .Error )
67
87
e.printStackTrace()
0 commit comments