Skip to content

Commit 849582f

Browse files
committed
feat(devin-lang): add console output support to DevInRunConfigurationProfileState #101
This commit introduces console output support in the `DevInRunConfigurationProfileState` class by importing the necessary `ConsoleView` and `ConsoleViewContentType` classes from the IntelliJ platform. It also modifies the `DevInRunFileAction` class to notify the user about the running DevIn file through the `AutoDevNotifications` class.
1 parent 3a37baa commit 849582f

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

exts/devin-lang/src/main/kotlin/cc/unitmesh/devti/language/actions/DevInRunFileAction.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package cc.unitmesh.devti.language.actions
22

3-
import cc.unitmesh.devti.AutoDevNotifications
43
import cc.unitmesh.devti.language.psi.DevInFile
54
import cc.unitmesh.devti.language.run.AutoDevConfiguration
65
import cc.unitmesh.devti.language.run.AutoDevConfigurationType
@@ -56,8 +55,6 @@ class DevInRunFileAction : DumbAwareAction() {
5655
if (builder != null) {
5756
ExecutionManager.getInstance(project).restartRunProfile(builder.build())
5857
}
59-
60-
AutoDevNotifications.notify(project, "Will Running DevIn file: ${file.name}")
6158
}
6259

6360
companion object {

exts/devin-lang/src/main/kotlin/cc/unitmesh/devti/language/run/DevInRunConfigurationProfileState.kt

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import com.intellij.execution.ExecutionException
66
import com.intellij.execution.ExecutionResult
77
import com.intellij.execution.Executor
88
import com.intellij.execution.configurations.RunProfileState
9+
import com.intellij.execution.console.ConsoleViewWrapperBase
10+
import com.intellij.execution.impl.ConsoleViewImpl
911
import com.intellij.execution.process.ProcessHandler
1012
import com.intellij.execution.process.ProcessTerminatedListener
1113
import com.intellij.execution.runners.ProgramRunner
1214
import com.intellij.execution.ui.ConsoleView
13-
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTask
15+
import com.intellij.execution.ui.ConsoleViewContentType
1416
import com.intellij.openapi.project.Project
1517
import com.intellij.openapi.util.io.StreamUtil
16-
import com.intellij.terminal.TerminalExecutionConsole
1718
import java.io.BufferedInputStream
1819
import java.io.BufferedOutputStream
1920
import java.io.InputStream
@@ -29,8 +30,13 @@ class DevInRunConfigurationProfileState(
2930
val processHandler: ProcessHandler = createProcessHandler(configuration.name)
3031
ProcessTerminatedListener.attach(processHandler)
3132

32-
val console: ConsoleView = TerminalExecutionConsole(myProject, processHandler)
33+
val console: ConsoleView = ConsoleViewWrapperBase(ConsoleViewImpl(myProject, true))
34+
3335
console.attachToProcess(processHandler)
36+
processHandler.startNotify()
37+
38+
console.print("Hello, World!", ConsoleViewContentType.NORMAL_OUTPUT)
39+
processHandler.destroyProcess()
3440

3541
return DefaultExecutionResult(console, processHandler)
3642
}
@@ -57,6 +63,9 @@ class DevInRunConfigurationProfileState(
5763
} finally {
5864
closeInput()
5965
}
66+
67+
// execute default process destroy
68+
super.destroyProcess()
6069
}
6170

6271
override fun detachProcessImpl() {
@@ -65,15 +74,12 @@ class DevInRunConfigurationProfileState(
6574
} finally {
6675
closeInput()
6776
}
68-
}
6977

70-
override fun getProcessInput(): OutputStream? {
71-
return myProcessInputWriter
78+
super.detachProcess()
7279
}
7380

74-
override fun getExecutionName(): String {
75-
return myExecutionName
76-
}
81+
override fun getProcessInput(): OutputStream? = myProcessInputWriter
82+
override fun getExecutionName(): String = myExecutionName
7783

7884
protected fun closeInput() {
7985
val processInputWriter = myProcessInputWriter

0 commit comments

Comments
 (0)