diff --git a/src/ce_ceproject.pas b/src/ce_ceproject.pas index 41cdc96e..7d079ad3 100644 --- a/src/ce_ceproject.pas +++ b/src/ce_ceproject.pas @@ -709,7 +709,6 @@ var nme: string; i, j: integer; begin - // for i := 0 to processInfo.simpleCommands.Count-1 do begin nme := fSymStringExpander.expand(processInfo.simpleCommands[i]); @@ -723,6 +722,7 @@ begin prc.Options:= [poUsePipes, poStderrToOutPut]; lst.Delete(0); prc.Parameters.Assign(lst); + prc.XTermProgram:=consoleProgram; prc.Execute; lst.Clear; processOutputToStrings(prc, lst); @@ -844,6 +844,7 @@ begin ChDir(fRunnerOldCwd); // fRunner := TCEProcess.Create(nil); + fRunner.XTermProgram:=consoleProgram; currentConfiguration.runOptions.setProcess(fRunner); if runArgs.isNotEmpty then begin @@ -872,7 +873,8 @@ begin SetCurrentDirUTF8(cwd); fRunner.CurrentDirectory := cwd; end; - if poUsePipes in fRunner.Options then begin + if poUsePipes in fRunner.Options then + begin fRunner.OnReadData := @runProcOutput; fRunner.OnTerminate := @runProcOutput; getprocInputHandler.addProcess(fRunner); diff --git a/src/ce_common.pas b/src/ce_common.pas index a62c9f46..cd4bd860 100644 --- a/src/ce_common.pas +++ b/src/ce_common.pas @@ -320,8 +320,10 @@ type procedure leadingSpacesToTabs(var value: string; width: integer); var - // supplementatl directories to find background tools + // additional directories to find background tools additionalPath: string; + // terminal used under posix + consoleProgram: string; implementation diff --git a/src/ce_dubproject.pas b/src/ce_dubproject.pas index 01e8c856..d38bcccd 100644 --- a/src/ce_dubproject.pas +++ b/src/ce_dubproject.pas @@ -28,10 +28,12 @@ type fDepCheck: TDubDependencyCheck; fOther: string; fCompiler: DCompiler; + fShowConsole: boolean; procedure setLinkMode(value: TDubLinkMode); procedure setCompiler(value: DCompiler); function getCompiler: DCompiler; published + property showConsole: boolean read fShowConsole write fShowConsole default false; property compiler: DCompiler read getCompiler write setCompiler; property parallel: boolean read fParallel write fParallel; property forceRebuild: boolean read fForceRebuild write fForceRebuild; @@ -647,10 +649,18 @@ begin end; chDir(fFilename.extractFilePath); fDubProc.Executable := 'dub' + exeExt; - fDubProc.Options := fDubProc.Options + [poStderrToOutPut, poUsePipes]; + if not dubBuildOptions.showConsole then + begin + fDubProc.Options := fDubProc.Options + [poStderrToOutPut, poUsePipes]; + fDubProc.OnReadData:= @dubProcOutput; + fDubProc.ShowWindow := swoHIDE; + end + else + begin + fDubProc.Options := fDubProc.Options + [poWaitOnExit, poNewConsole]; + end; fDubProc.CurrentDirectory := fFilename.extractFilePath; - fDubProc.ShowWindow := swoHIDE; - fDubProc.OnReadData:= @dubProcOutput; + fDubProc.XTermProgram:=consoleProgram; if not run then begin fDubProc.Parameters.Add('build'); diff --git a/src/ce_main.lfm b/src/ce_main.lfm index 1eda6160..db12cfaa 100644 --- a/src/ce_main.lfm +++ b/src/ce_main.lfm @@ -1513,45 +1513,6 @@ object CEMainForm: TCEMainForm 000089898AFF000000000000000000000000FFFFFF00FFFFFF00 } end - object MenuItem109: TMenuItem - Action = actFileNewClip - Bitmap.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000002E00000033000000330000 - 0033000000330000003300000033000000330000003300000030000000230000 - 003300000033000000330000003300000033C28722ECB88222FFB57F20FFB57F - 1FFFB57F1FFFB57F1FFFB57F1FFFB57F20FFB68124FFB7852CF23B6088C04068 - 93FF3F6893FF406893FF3E6795FF33649BFFC38419FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB68124FF3F6A94FF568A - B0FF4C82ABFF4D82ABFF4B82ACFF407EB3FFC08013FFFFFFFFFFE6D6AEFFE6D6 - AFFFE6D7B0FFE6D7B0FFE6D6AFFFE6D6AEFFFFFFFFFFB57F1FFF3F6A95FF6594 - BBFF4C83AEFF4E83AEFF4C83B0FF4180B8FFC07F12FFFFFFFFFFE5D5ACFFE6D6 - AFFFE6D6AFFFE6D6AFFFE6D6AFFFE5D5ACFFFFFFFFFFB47E1EFF3F6B95FF74A1 - C3FF4F86B1FF5187B2FF4F87B4FF4585BCFFBF7E11FFFFFFFFFFF8F2E5FFF8F2 - E6FFF8F3E7FFF8F3E7FFF8F2E6FFF8F2E5FFFFFFFFFFB47E1EFF3F6B97FF82AB - CCFF5088B5FF528AB6FF518AB8FF4788C0FFBF7E10FFFFFFFFFFF3ECD9FFF3EC - D9FFF3ECDAFFF3ECD9FFF3ECD9FFF3ECD8FFFFFFFFFFB47E1EFF3E6C97FF91B6 - D5FF528BBAFF558CBBFF548DBDFF4A8BC6FFBF7E10FFFFFFFFFFF1E8CFFFF1E8 - D0FFF1E8D0FFF0E7CFFFF0E6CDFFF0E7CDFFFFFFFFFFB47E1EFF3E6D97FF9FC1 - DDFF538EBDFF5791BFFF5691C1FF4C90CAFFBE7D10FFFFFFFFFFEDE3C7FFEDE3 - C8FFEDE3C7FFF6F0E1FFFFFFFFFFFFFFFFFFFFFFFFFFB47F1EFF3E6E99FFACCA - E4FF5691C1FF5A93C3FF5994C5FF5093CFFFBE7D0FFFFFFFFFFFEBDDBCFFEBDD - BDFFEBDCBBFFFFFFFFFFCFAB6DFFAC7005FFFFFFFFFFB58022FF3E6F9AFFB9D5 - EAFF5794C6FF5B97C8FF5B98CAFF5298D5FFBE7D0FFFFFFFFFFFE7D8B1FFE7D8 - B1FFE7D7B0FFFFFFFFFFAC7005FFFFFFFFFFECDCC4FFB78327AC3D709AFFC6DE - F0FF5997CBFF5E9ACDFF5E9BCFFF569BD9FFC17F10FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFECDCC4FFB58022A7B9872E003E729DFFD4E7 - F8FF5997CBFF7F95A7FF99938EFF99938EFF988E63FFBC7F14FFB97C12FFBA7C - 10FFBB7E14FFB87F1BFFB68020FFB78326ACB9872E00BB89320042759FFFADD2 - F4FF5997CBFFA7A19BFFD6CBC5FFD6CBC5FFD6CBC5FFA7A19BFF5997CBFFA5D4 - FFFF3173B0FFC7892100BE892C00BB893100BB8A3200BB8A3300477AA3B03E77 - A4FF3E77A4FF99938EFFE5DDD8FFE5DDD8FFE5DDD8FF99938EFF3E77A4FF3C77 - A6FF4179AAAF3879B700C48B2A00BD8A3100BB8A3300BB8A3300487BA500417A - A700908B8700F4F2F00099938EFF99938EFF99938EFFF2F0EE00908B8700417A - A700467BA7003D7AB200C68C2700BD8A3100BB8A3300BB8A3300 - } - end object MenuItem24: TMenuItem Action = actFileNewRun Bitmap.Data = { @@ -1591,6 +1552,45 @@ object CEMainForm: TCEMainForm 07FFB47A07FFB47A08FFB57C0AFFB67F0FFFB88114FFBA851B23 } end + object MenuItem109: TMenuItem + Action = actFileNewClip + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000000000000000 + 0000000000000000000000000000000000000000002E00000033000000330000 + 0033000000330000003300000033000000330000003300000030000000230000 + 003300000033000000330000003300000033C28722ECB88222FFB57F20FFB57F + 1FFFB57F1FFFB57F1FFFB57F1FFFB57F20FFB68124FFB7852CF23B6088C04068 + 93FF3F6893FF406893FF3E6795FF33649BFFC38419FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB68124FF3F6A94FF568A + B0FF4C82ABFF4D82ABFF4B82ACFF407EB3FFC08013FFFFFFFFFFE6D6AEFFE6D6 + AFFFE6D7B0FFE6D7B0FFE6D6AFFFE6D6AEFFFFFFFFFFB57F1FFF3F6A95FF6594 + BBFF4C83AEFF4E83AEFF4C83B0FF4180B8FFC07F12FFFFFFFFFFE5D5ACFFE6D6 + AFFFE6D6AFFFE6D6AFFFE6D6AFFFE5D5ACFFFFFFFFFFB47E1EFF3F6B95FF74A1 + C3FF4F86B1FF5187B2FF4F87B4FF4585BCFFBF7E11FFFFFFFFFFF8F2E5FFF8F2 + E6FFF8F3E7FFF8F3E7FFF8F2E6FFF8F2E5FFFFFFFFFFB47E1EFF3F6B97FF82AB + CCFF5088B5FF528AB6FF518AB8FF4788C0FFBF7E10FFFFFFFFFFF3ECD9FFF3EC + D9FFF3ECDAFFF3ECD9FFF3ECD9FFF3ECD8FFFFFFFFFFB47E1EFF3E6C97FF91B6 + D5FF528BBAFF558CBBFF548DBDFF4A8BC6FFBF7E10FFFFFFFFFFF1E8CFFFF1E8 + D0FFF1E8D0FFF0E7CFFFF0E6CDFFF0E7CDFFFFFFFFFFB47E1EFF3E6D97FF9FC1 + DDFF538EBDFF5791BFFF5691C1FF4C90CAFFBE7D10FFFFFFFFFFEDE3C7FFEDE3 + C8FFEDE3C7FFF6F0E1FFFFFFFFFFFFFFFFFFFFFFFFFFB47F1EFF3E6E99FFACCA + E4FF5691C1FF5A93C3FF5994C5FF5093CFFFBE7D0FFFFFFFFFFFEBDDBCFFEBDD + BDFFEBDCBBFFFFFFFFFFCFAB6DFFAC7005FFFFFFFFFFB58022FF3E6F9AFFB9D5 + EAFF5794C6FF5B97C8FF5B98CAFF5298D5FFBE7D0FFFFFFFFFFFE7D8B1FFE7D8 + B1FFE7D7B0FFFFFFFFFFAC7005FFFFFFFFFFECDCC4FFB78327AC3D709AFFC6DE + F0FF5997CBFF5E9ACDFF5E9BCFFF569BD9FFC17F10FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFECDCC4FFB58022A7B9872E003E729DFFD4E7 + F8FF5997CBFF7F95A7FF99938EFF99938EFF988E63FFBC7F14FFB97C12FFBA7C + 10FFBB7E14FFB87F1BFFB68020FFB78326ACB9872E00BB89320042759FFFADD2 + F4FF5997CBFFA7A19BFFD6CBC5FFD6CBC5FFD6CBC5FFA7A19BFF5997CBFFA5D4 + FFFF3173B0FFC7892100BE892C00BB893100BB8A3200BB8A3300477AA3B03E77 + A4FF3E77A4FF99938EFFE5DDD8FFE5DDD8FFE5DDD8FF99938EFF3E77A4FF3C77 + A6FF4179AAAF3879B700C48B2A00BD8A3100BB8A3300BB8A3300487BA500417A + A700908B8700F4F2F00099938EFF99938EFF99938EFFF2F0EE00908B8700417A + A700467BA7003D7AB200C68C2700BD8A3100BB8A3300BB8A3300 + } + end object MenuItem97: TMenuItem Action = actFileNewDubScript Bitmap.Data = { diff --git a/src/ce_main.pas b/src/ce_main.pas index 9ef8408a..eb35f5ac 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -569,6 +569,8 @@ type fSplitterScrollSpeed: byte; fAutoCheckUpdates: boolean; fShowBuildDuration: boolean; + function getConsoleProgram: string; + procedure setConsoleProgram(const value: string); function getAdditionalPATH: string; procedure setAdditionalPATH(const value: string); function getNativeProjecCompiler: DCompiler; @@ -577,6 +579,7 @@ type published property additionalPATH: string read getAdditionalPATH write setAdditionalPath; property autoCheckUpdates: boolean read fAutoCheckUpdates write fAutoCheckUpdates; + property consoleProgram: string read getConsoleProgram write setConsoleProgram; property coverModuleTests: boolean read fCovModUt write fCovModUt; property floatingWidgetOnTop: boolean read fFloatingWidgetOnTop write fFloatingWidgetOnTop; property reloadLastDocuments: boolean read fReloadLastDocuments write fReloadLastDocuments; @@ -815,6 +818,17 @@ begin exit(ce_common.additionalPath); end; +function TCEApplicationOptionsBase.getConsoleProgram: string; +begin + result := ce_common.consoleProgram; +end; + +procedure TCEApplicationOptionsBase.setConsoleProgram(const value: string); +begin + if exeFullName(value).fileExists then + ce_common.consoleProgram:=value; +end; + procedure TCEApplicationOptionsBase.setAdditionalPath(const value: string); var str: TStringList; @@ -2792,6 +2806,7 @@ begin {$IFNDEF WINDOWS} fRunProc.Options := fRunProc.Options + [poNewConsole]; {$ENDIF} + fRunProc.XTermProgram:=consoleProgram; end; lst := TStringList.Create; try @@ -3011,6 +3026,7 @@ begin fRunProc.ShowWindow := swoHIDE; fRunProc.OnReadData := @asyncprocOutput; fRunProc.OnTerminate:= @asyncprocTerminate; + fRunProc.XTermProgram:=consoleProgram; getprocInputHandler.addProcess(fRunProc); end else diff --git a/src/ce_tools.pas b/src/ce_tools.pas index 3df65eea..1f815941 100644 --- a/src/ce_tools.pas +++ b/src/ce_tools.pas @@ -209,6 +209,7 @@ begin fProcess.Executable := exeFullName(fSymStringExpander.expand(fExecutable)); fProcess.ShowWindow := fShowWin; fProcess.CurrentDirectory := fSymStringExpander.expand(fWorkingDir); + fProcess.XTermProgram:=consoleProgram; for prm in fParameters do if not isStringDisabled(prm) then fProcess.Parameters.AddText(fSymStringExpander.expand(prm)); if fQueryParams then