@@ -4,38 +4,43 @@ import cc.unitmesh.terminal.ShellCommandSuggestAction.Companion.suggestCommand
4
4
import com.intellij.openapi.actionSystem.AnActionEvent
5
5
import com.intellij.openapi.actionSystem.DataProvider
6
6
import com.intellij.openapi.application.runInEdt
7
- import com.intellij.openapi.editor.ex.EditorEx
7
+ import com.intellij.openapi.ide.CopyPasteManager
8
8
import com.intellij.openapi.project.Project
9
9
import com.intellij.openapi.wm.ToolWindowManager
10
10
import com.intellij.terminal.ui.TerminalWidget
11
11
import com.intellij.ui.components.panels.Wrapper
12
12
import com.intellij.ui.content.Content
13
13
import org.jetbrains.plugins.terminal.TerminalToolWindowFactory
14
14
import org.jetbrains.plugins.terminal.TerminalToolWindowManager
15
- import org.jetbrains.plugins.terminal.exp.TerminalOutputController
15
+ import org.jetbrains.plugins.terminal.exp.TerminalPromptController
16
16
17
17
object TerminalUtil {
18
18
fun sendMsg (project : Project , data : String , e : AnActionEvent ) {
19
19
val content = getContent(project) ? : return
20
20
val findWidgetByContent = TerminalToolWindowManager .findWidgetByContent(content) ? : return
21
- val editor = tryGetBlockTerminalEditor(findWidgetByContent)
22
- if (editor == null ) {
21
+ val controller : TerminalPromptController ? = tryGetBlockTerminalEditor(findWidgetByContent)
22
+ if (controller == null ) {
23
23
trySendMsgInOld(project, data, content)
24
24
return
25
25
}
26
26
27
+ val sb = StringBuilder ()
27
28
suggestCommand(data, project) { string ->
28
- runInEdt {
29
- editor.document.insertString(editor.caretModel.offset, string)
30
- }
29
+ sb.append(string)
30
+ null
31
+ }
32
+
33
+ runInEdt {
34
+ CopyPasteManager .copyTextToClipboard(sb.toString())
35
+ controller.performPaste(e.dataContext)
31
36
}
32
37
}
33
38
34
- private fun tryGetBlockTerminalEditor (findWidgetByContent : TerminalWidget ): EditorEx ? {
39
+ private fun tryGetBlockTerminalEditor (findWidgetByContent : TerminalWidget ): TerminalPromptController ? {
35
40
val terminalView = (findWidgetByContent.component as Wrapper ).targetComponent
36
41
if (terminalView is DataProvider ) {
37
- val controller = terminalView.getData(TerminalOutputController .KEY .name)
38
- return (controller as ? TerminalOutputController )?.outputModel?.editor
42
+ val controller = terminalView.getData(TerminalPromptController .KEY .name)
43
+ return (controller as ? TerminalPromptController )
39
44
}
40
45
41
46
return null
0 commit comments