From 81390d9f028a8ee7c2193b5a9e3b8cd146b31fd6 Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Wed, 8 Jan 2025 22:50:08 +0800 Subject: [PATCH] refactor(debugger): simplify imports and improve debug process flow #183 - Consolidate imports using wildcard for cleaner code. - Move process listener setup to `start()` method for better initialization flow. - Ensure process termination is handled correctly in `ShireRunConfigurationProfileState`. --- .../shirelang/debugger/ShireDebugProcess.kt | 19 ++++++++----------- .../run/ShireRunConfigurationProfileState.kt | 5 ++++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/shirelang/src/main/kotlin/com/phodal/shirelang/debugger/ShireDebugProcess.kt b/shirelang/src/main/kotlin/com/phodal/shirelang/debugger/ShireDebugProcess.kt index 530d3e51..ac3798d6 100644 --- a/shirelang/src/main/kotlin/com/phodal/shirelang/debugger/ShireDebugProcess.kt +++ b/shirelang/src/main/kotlin/com/phodal/shirelang/debugger/ShireDebugProcess.kt @@ -1,7 +1,6 @@ package com.phodal.shirelang.debugger import com.intellij.execution.process.ProcessEvent -import com.intellij.execution.process.ProcessListener import com.intellij.execution.runners.ExecutionEnvironment import com.intellij.execution.ui.ConsoleViewContentType import com.intellij.execution.ui.ExecutionConsole @@ -10,7 +9,6 @@ import com.intellij.execution.ui.layout.PlaceInGrid import com.intellij.icons.AllIcons import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.util.Key import com.intellij.ui.content.Content import com.intellij.util.Alarm import com.intellij.xdebugger.XDebugProcess @@ -23,10 +21,7 @@ import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider import com.intellij.xdebugger.frame.XSuspendContext import com.intellij.xdebugger.ui.XDebugTabLayouter import com.phodal.shirelang.psi.ShireFile -import com.phodal.shirelang.run.ShireConfiguration -import com.phodal.shirelang.run.ShireConsoleView -import com.phodal.shirelang.run.ShireRunConfigurationProfileState -import com.phodal.shirelang.run.ShireRunListener +import com.phodal.shirelang.run.* import com.phodal.shirelang.run.runner.ShireRunner import com.phodal.shirelang.run.runner.ShireRunnerContext import kotlinx.coroutines.runBlocking @@ -52,7 +47,6 @@ class ShireDebugProcess(private val session: XDebugSession, private val environm var shireRunnerContext: ShireRunnerContext? = null - fun start() { myRequestsScheduler.addRequest({ runBlocking { @@ -63,6 +57,13 @@ class ShireDebugProcess(private val session: XDebugSession, private val environm session.positionReached(ShireSuspendContext(this@ShireDebugProcess, session.project)) } }, 0) + + val processAdapter = ShireProcessAdapter(debuggableConfiguration, runProfileState.console) + processHandler.addProcessListener(processAdapter) + runProfileState.console.print("Waiting for resume...", ConsoleViewContentType.NORMAL_OUTPUT) + } + + override fun resume(context: XSuspendContext?) { connection.subscribe(ShireRunListener.TOPIC, object : ShireRunListener { override fun runFinish( allOutput: String, @@ -75,10 +76,6 @@ class ShireDebugProcess(private val session: XDebugSession, private val environm } }) - runProfileState.console.print("Waiting for resume...", ConsoleViewContentType.NORMAL_OUTPUT) - } - - override fun resume(context: XSuspendContext?) { runProfileState.execute(environment.executor, environment.runner) } diff --git a/shirelang/src/main/kotlin/com/phodal/shirelang/run/ShireRunConfigurationProfileState.kt b/shirelang/src/main/kotlin/com/phodal/shirelang/run/ShireRunConfigurationProfileState.kt index 6ba9589d..b3f42a22 100644 --- a/shirelang/src/main/kotlin/com/phodal/shirelang/run/ShireRunConfigurationProfileState.kt +++ b/shirelang/src/main/kotlin/com/phodal/shirelang/run/ShireRunConfigurationProfileState.kt @@ -4,7 +4,9 @@ import com.intellij.execution.DefaultExecutionResult import com.intellij.execution.ExecutionResult import com.intellij.execution.Executor import com.intellij.execution.configurations.RunProfileState -import com.intellij.execution.process.* +import com.intellij.execution.process.ProcessEvent +import com.intellij.execution.process.ProcessListener +import com.intellij.execution.process.ProcessTerminatedListener import com.intellij.execution.runners.ProgramRunner import com.intellij.execution.ui.ConsoleViewContentType import com.intellij.openapi.Disposable @@ -78,6 +80,7 @@ class ShireRunConfigurationProfileState( val llmOutput = shireRunner.execute(parsedResult) processAdapter.setLlmOutput(llmOutput) + processAdapter.processTerminated(ProcessEvent(processHandler, 0)) myProject.getService(OnStreamingService::class.java)?.onDone(myProject) } catch (e: Exception) { console.print(