From 3fb4dce4a17d19f82c57b9a95f58fbaadd35118a Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Wed, 9 Dec 2015 14:30:28 +0300 Subject: [PATCH] start/stop program actions, external console using xterm -e --- src/ddebug/common/nodebug.d | 14 ++++++++++++++ src/dlangide/ui/frame.d | 9 +++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/ddebug/common/nodebug.d b/src/ddebug/common/nodebug.d index b8d4703..3d5c650 100644 --- a/src/ddebug/common/nodebug.d +++ b/src/ddebug/common/nodebug.d @@ -70,9 +70,23 @@ class ProgramExecutionNoDebug : Thread, ProgramExecution { private void threadFunc() { import std.stdio; + import std.array: empty; + + // prepare parameter list string[] params; params ~= _executableFile; params ~= _args; + + // external console support + if (!_externalConsole.empty) { + string cmdline = escapeShellCommand(params); + cmdline = escapeShellFileName(cmdline); + params.length = 0; + params ~= _externalConsole; + params ~= "-e"; + params ~= cmdline; + } + File newstdin; File newstdout; File newstderr; diff --git a/src/dlangide/ui/frame.d b/src/dlangide/ui/frame.d index efe1348..5a0df52 100644 --- a/src/dlangide/ui/frame.d +++ b/src/dlangide/ui/frame.d @@ -609,8 +609,6 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener { case IDEActions.RebuildWorkspace: case IDEActions.CleanProject: case IDEActions.CleanWorkspace: - case IDEActions.DebugStart: - case IDEActions.DebugStartNoDebug: case IDEActions.UpdateProjectDependencies: case IDEActions.RefreshProject: case IDEActions.SetStartupProject: @@ -624,6 +622,13 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener { case IDEActions.DebugStop: a.state = isExecutionActive ? ACTION_STATE_ENABLED : ACTION_STATE_DISABLE; return true; + case IDEActions.DebugStart: + case IDEActions.DebugStartNoDebug: + if (!isExecutionActive && currentWorkspace && currentWorkspace.startupProject && !_currentBackgroundOperation) + a.state = ACTION_STATE_ENABLED; + else + a.state = ACTION_STATE_DISABLE; + return true; case IDEActions.DebugContinue: case IDEActions.DebugPause: a.state = isExecutionActive && _execution.isDebugger ? ACTION_STATE_ENABLED : ACTION_STATE_DISABLE;