@@ -12,6 +12,7 @@ import com.intellij.openapi.progress.ProgressManager
1212import com.intellij.openapi.progress.Task.Backgroundable
1313import com.intellij.openapi.project.Project
1414import com.intellij.openapi.wm.ToolWindowManager
15+ import com.intellij.remote.BaseRemoteProcessHandler
1516import com.jetbrains.php.composer.ComposerUtils
1617import com.jetbrains.php.config.PhpProjectConfigurationFacade
1718import com.jetbrains.php.config.commandLine.PhpCommandSettings
@@ -97,8 +98,7 @@ class PhpArtisanTinkerUtil(private val project: Project, private val phpCode: St
9798 val tinkerRunSettings = projectSettings.parseJson()
9899 phpCommandSettings.addArguments(listOf (" -r" , phpTinkerCodeRunnerCode, phpCode, tinkerRunSettings.toString()))
99100
100- val osProcessHandler = runConfiguration.createProcessHandler(project, phpCommandSettings, true ) as OSProcessHandler
101- processHandler = KillableProcessHandler (osProcessHandler.process, osProcessHandler.commandLine)
101+ processHandler = getAnsiUnfilteredProcessHandler(runConfiguration.createProcessHandler(project, phpCommandSettings, true ))
102102
103103 ProcessTerminatedListener .attach(processHandler, project, " " )
104104 } catch (ex: ExecutionException ) {
@@ -128,7 +128,7 @@ class PhpArtisanTinkerUtil(private val project: Project, private val phpCode: St
128128 object : Backgroundable (project, Strings .get(" lt.running" )) {
129129 override fun run (progressIndicator : ProgressIndicator ) {
130130 processHandler.startNotify()
131- processHandler.processInput.writer().write(" \u0004 " )
131+ processHandler.processInput? .writer()? .write(" \u0004 " )
132132 while (! processHandler.isProcessTerminated) {
133133 Thread .sleep(250 )
134134 try {
@@ -142,4 +142,21 @@ class PhpArtisanTinkerUtil(private val project: Project, private val phpCode: St
142142 }
143143 )
144144 }
145+
146+ private fun getAnsiUnfilteredProcessHandler (processHandler : ProcessHandler ): ProcessHandler {
147+ if (processHandler is KillableProcessHandler ) {
148+ return processHandler
149+ }
150+
151+ if (processHandler is OSProcessHandler ) {
152+ return KillableProcessHandler (processHandler.process, processHandler.commandLine)
153+ }
154+
155+ if (processHandler is BaseRemoteProcessHandler <* >) {
156+ return BaseRemoteProcessHandler (processHandler.process, processHandler.commandLine, processHandler.charset)
157+ }
158+
159+ // Could not find suitable cast, return original
160+ return processHandler
161+ }
145162}
0 commit comments