From: Rejean Loyer Date: Sun, 14 Sep 2014 18:33:23 +0000 (-0400) Subject: ide: implement hold down ctrl key for raw compiler output. X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?p=sdk;a=commitdiff_plain;h=93a75c43931668dc8afe6432e699194d7ba873e9 ide: implement hold down ctrl key for raw compiler output. --- diff --git a/ide/src/ide.ec b/ide/src/ide.ec index 74cd35e..044bab6 100755 --- a/ide/src/ide.ec +++ b/ide/src/ide.ec @@ -3070,7 +3070,7 @@ class IDEWorkSpace : Window { List nodes { }; nodes.Add(node); - projectView.Compile(node.project, nodes, mods.ctrl && mods.shift, isCObject ? cObject : normal); + projectView.Compile(node.project, nodes, false, false, isCObject ? cObject : normal); delete nodes; } } diff --git a/ide/src/project/Project.ec b/ide/src/project/Project.ec index 178e8ef..fc030a9 100644 --- a/ide/src/project/Project.ec +++ b/ide/src/project/Project.ec @@ -2082,7 +2082,7 @@ private: } } - bool Build(BuildType buildType, List onlyNodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, SingleFileCompileMode mode) + bool Build(BuildType buildType, List onlyNodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, bool raw, SingleFileCompileMode mode) { bool result = false; DualPipe f; @@ -2147,10 +2147,9 @@ private: targetPlatform, bitDepth ? " ARCH=" : "", bitDepth == 32 ? "32" : bitDepth == 64 ? "64" : "", /*(bitDepth == 64 && compiler.targetPlatform == win32) ? " GCC_PREFIX=x86_64-w64-mingw32-" : (bitDepth == 32 && compiler.targetPlatform == win32) ? " GCC_PREFIX=i686-w64-mingw32-" : */"", - compilerName, - objFileExt ? " O=." : "", objFileExt ? objFileExt : "", - topNode.path, justPrint ? " -n" : "", makeFilePath); - if(justPrint) + + compilerName, topNode.path, justPrint ? " -n" : "", makeFilePath); + if(justPrint || raw) ide.outputView.buildBox.Logf("%s\n", command); Execute(command); } @@ -2180,7 +2179,7 @@ private: // TODO: support justPrint sprintf(command, "%s /useenv /nologo /logcommands %s.sln %s|Win32", compiler.makeCommand, name, config.name); - if(justPrint) + if(justPrint || raw) ide.outputView.buildBox.Logf("%s\n", command); if((f = DualPipeOpen(PipeOpenMode { output = true, error = true/*, input = true*/ }, command))) { @@ -2224,7 +2223,7 @@ private: (compiler.ccacheEnabled && !eC_Debug) ? "CCACHE=y " : "", (compiler.distccEnabled && !eC_Debug) ? "DISTCC=y " : "", (String)makeTargets, topNode.path, (justPrint || eC_Debug) ? " -n" : "", makeFilePath); - if(justPrint) + if(justPrint || raw) ide.outputView.buildBox.Logf("%s\n", command); if((f = DualPipeOpen(PipeOpenMode { output = true, error = true, input = true }, command))) @@ -2261,7 +2260,7 @@ private: if(found) result = true; } - else if(justPrint) + else if(justPrint || raw) result = ProcessPipeOutputRaw(f); else result = ProcessBuildPipeOutput(f, objDirExp, buildType, onlyNodes, compiler, config, bitDepth); @@ -2284,7 +2283,7 @@ private: return result; } - void Clean(CompilerConfig compiler, ProjectConfig config, int bitDepth, CleanType cleanType, bool justPrint) + void Clean(CompilerConfig compiler, ProjectConfig config, int bitDepth, CleanType cleanType, bool justPrint, bool raw) { char makeFile[MAX_LOCATION]; char makeFilePath[MAX_LOCATION]; @@ -2314,7 +2313,7 @@ private: // TODO: justPrint support sprintf(command, "%s /useenv /clean /nologo /logcommands %s.sln %s|Win32", compiler.makeCommand, name, config.name); - if(justPrint) + if(justPrint || raw) ide.outputView.buildBox.Logf("%s\n", command); if((f = DualPipeOpen(PipeOpenMode { output = true, error = true, input = true }, command))) { @@ -2337,14 +2336,14 @@ private: objFileExt ? " O=." : "", objFileExt ? objFileExt : "", cleanType == realClean ? "real" : "", cleanType == cleanTarget ? "target" : "", topNode.path, justPrint ? " -n": "", makeFilePath); - if(justPrint) + if(justPrint || raw) ide.outputView.buildBox.Logf("%s\n", command); if((f = DualPipeOpen(PipeOpenMode { output = true, error = true, input = true }, command))) { ide.outputView.buildBox.Tellf($"Deleting %s%s...", cleanType == realClean ? $"intermediate objects directory" : $"target", cleanType == clean ? $" and object files" : ""); - if(justPrint) + if(justPrint || raw) ProcessPipeOutputRaw(f); else ProcessCleanPipeOutput(f, compiler, config); @@ -2405,9 +2404,9 @@ private: delete target; } - bool Compile(List nodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, SingleFileCompileMode mode) + bool Compile(List nodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, bool raw, SingleFileCompileMode mode) { - return Build(build, nodes, compiler, config, bitDepth, justPrint, mode); + return Build(build, nodes, compiler, config, bitDepth, justPrint, raw, mode); } #endif diff --git a/ide/src/project/ProjectView.ec b/ide/src/project/ProjectView.ec index 626654d..8690d11 100644 --- a/ide/src/project/ProjectView.ec +++ b/ide/src/project/ProjectView.ec @@ -748,12 +748,12 @@ class ProjectView : Window return false; } - bool BuildInterrim(Project prj, BuildType buildType, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint) + bool BuildInterrim(Project prj, BuildType buildType, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, bool raw) { if(ProjectPrepareForToolchain(prj, normal, true, true, compiler, config)) { ide.outputView.buildBox.Logf($"Building project %s using the %s configuration...\n", prj.name, GetConfigName(config)); - return Build(prj, buildType, compiler, config, bitDepth, justPrint); + return Build(prj, buildType, compiler, config, bitDepth, justPrint, raw); } return false; } @@ -785,7 +785,7 @@ class ProjectView : Window return result; } - bool Build(Project prj, BuildType buildType, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint) + bool Build(Project prj, BuildType buildType, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, bool raw) { bool result = true; Window document; @@ -811,11 +811,11 @@ class ProjectView : Window // TODO: Disabled until problems fixed... is it fixed? if(buildType == rebuild || (config && config.compilingModified)) - prj.Clean(compiler, config, bitDepth, clean, justPrint); + prj.Clean(compiler, config, bitDepth, clean, justPrint, raw); else { if(buildType == relink || (config && config.linkingModified)) - prj.Clean(compiler, config, bitDepth, cleanTarget, false); + prj.Clean(compiler, config, bitDepth, cleanTarget, false, raw); if(config && config.symbolGenModified) { DirExpression objDir = prj.GetObjDir(compiler, config, bitDepth); @@ -842,7 +842,7 @@ class ProjectView : Window ide.AdjustBuildMenus(); ide.AdjustDebugMenus(); - result = prj.Build(buildType, null, compiler, config, bitDepth, justPrint, normal); + result = prj.Build(buildType, null, compiler, config, bitDepth, justPrint, raw, normal); if(config) { @@ -894,7 +894,7 @@ class ProjectView : Window config = prj.config; if(/*prj != project || */!prj.GetConfigIsInDebugSession(config) || !ide.DontTerminateDebugSession($"Project Build")) { - BuildInterrim(prj, build, compiler, config, bitDepth, mods.ctrl && mods.shift); + BuildInterrim(prj, build, compiler, config, bitDepth, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); } delete compiler; } @@ -925,11 +925,11 @@ class ProjectView : Window if(!prj.GetConfigIsInDebugSession(config) || (!ide.DontTerminateDebugSession($"Project Install") && DebugStopForMake(prj, relink, compiler, config))) { - BuildInterrim(prj, build, compiler, config, bitDepth, mods.ctrl && mods.shift); + BuildInterrim(prj, build, compiler, config, bitDepth, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); if(ProjectPrepareForToolchain(prj, normal, false, false, compiler, config)) { ide.outputView.buildBox.Logf($"\nInstalling project %s using the %s configuration...\n", prj.name, GetConfigName(config)); - Build(prj, install, compiler, config, bitDepth, mods.ctrl && mods.shift); + Build(prj, install, compiler, config, bitDepth, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); } } delete compiler; @@ -963,7 +963,7 @@ class ProjectView : Window ide.outputView.buildBox.Logf($"Relinking project %s using the %s configuration...\n", prj.name, GetConfigName(config)); if(config) config.linkingModified = true; - Build(prj, relink, compiler, config, bitDepth, mods.ctrl && mods.shift); + Build(prj, relink, compiler, config, bitDepth, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); } } delete compiler; @@ -1000,7 +1000,7 @@ class ProjectView : Window config.compilingModified = true; config.makingModified = true; }*/ // -- should this still be used depite the new solution of BuildType? - Build(prj, rebuild, compiler, config, bitDepth, mods.ctrl && mods.shift); + Build(prj, rebuild, compiler, config, bitDepth, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); } } delete compiler; @@ -1009,23 +1009,23 @@ class ProjectView : Window bool ProjectCleanTarget(MenuItem selection, Modifiers mods) { - CleanProject($"Project Clean Target", $"Cleaning project %s target using the %s configuration...\n", selection, cleanTarget, mods.ctrl && mods.shift); + CleanProject($"Project Clean Target", $"Cleaning project %s target using the %s configuration...\n", selection, cleanTarget, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); return true; } bool ProjectClean(MenuItem selection, Modifiers mods) { - CleanProject($"Project Clean", $"Cleaning project %s using the %s configuration...\n", selection, clean, mods.ctrl && mods.shift); + CleanProject($"Project Clean", $"Cleaning project %s using the %s configuration...\n", selection, clean, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); return true; } bool ProjectRealClean(MenuItem selection, Modifiers mods) { - CleanProject($"Project Real Clean", $"Removing intermediate objects directory for project %s using the %s configuration...\n", selection, realClean, mods.ctrl && mods.shift); + CleanProject($"Project Real Clean", $"Removing intermediate objects directory for project %s using the %s configuration...\n", selection, realClean, mods.ctrl && mods.shift, mods.ctrl && !mods.shift); return true; } - void CleanProject(const char * terminateDebugSessionMessage, const char * cleaningMessageLogFormat, MenuItem selection, CleanType cleanType, bool justPrint) + void CleanProject(const char * terminateDebugSessionMessage, const char * cleaningMessageLogFormat, MenuItem selection, CleanType cleanType, bool justPrint, bool raw) { Project prj = project; Array projects { }; @@ -1075,7 +1075,7 @@ class ProjectView : Window ide.AdjustBuildMenus(); ide.AdjustDebugMenus(); - prj.Clean(compiler, config, bitDepth, cleanType, justPrint); + prj.Clean(compiler, config, bitDepth, cleanType, justPrint, raw); buildInProgress = none; ide.AdjustBuildMenus(); ide.AdjustDebugMenus(); @@ -1112,7 +1112,7 @@ class ProjectView : Window return true; } - bool Compile(Project project, List nodes, bool justPrint, SingleFileCompileMode mode) + bool Compile(Project project, List nodes, bool justPrint, bool raw, SingleFileCompileMode mode) { bool result = true; Window document; @@ -1153,7 +1153,7 @@ class ProjectView : Window buildInProgress = compilingFile; ide.AdjustBuildMenus(); - result = project.Compile(nodes, compiler, config, bitDepth, justPrint, mode); + result = project.Compile(nodes, compiler, config, bitDepth, justPrint, raw, mode); buildInProgress = none; ide.AdjustBuildMenus(); } @@ -1387,7 +1387,7 @@ class ProjectView : Window } selectedRows.Free(null); if(project) - Compile(project, nodes, mods.ctrl && mods.shift, normal); + Compile(project, nodes, mods.ctrl && mods.shift, mods.ctrl && !mods.shift, normal); else ide.outputView.buildBox.Logf($"Please select files from a single project.\n"); delete nodes; @@ -1435,7 +1435,7 @@ class ProjectView : Window ProjectBuild(selection, mods); ide.Update(null); if(!stopBuild) - Compile(node.project, nodes, mods.ctrl && mods.shift, debugPrecompile); + Compile(node.project, nodes, mods.ctrl && mods.shift, mods.ctrl && !mods.shift, debugPrecompile); delete nodes; } return true; @@ -1452,9 +1452,9 @@ class ProjectView : Window if(node.type == project) ProjectBuild(selection, mods); else - Compile(node.project, nodes, mods.ctrl && mods.shift, normal); + Compile(node.project, nodes, mods.ctrl && mods.shift, mods.ctrl && !mods.shift, normal); if(!stopBuild) - Compile(node.project, nodes, mods.ctrl && mods.shift, debugCompile); + Compile(node.project, nodes, mods.ctrl && mods.shift, mods.ctrl && !mods.shift, debugCompile); delete nodes; } return true; @@ -1471,9 +1471,9 @@ class ProjectView : Window if(node.type == project) ProjectBuild(selection, mods); else - Compile(node.project, nodes, mods.ctrl && mods.shift, normal); + Compile(node.project, nodes, mods.ctrl && mods.shift, mods.ctrl && !mods.shift, normal); if(!stopBuild) - Compile(node.project, nodes, mods.ctrl && mods.shift, debugGenerateSymbols); + Compile(node.project, nodes, mods.ctrl && mods.shift, mods.ctrl && !mods.shift, debugGenerateSymbols); delete nodes; } return true; @@ -1558,7 +1558,7 @@ class ProjectView : Window project.Run(args, compiler, config, bitDepth); /*else if(config.targetType == sharedLibrary || config.targetType == staticLibrary) MessageBox { master = ide, type = ok, text = "Run", contents = "Shared and static libraries cannot be run like executables." }.Modal();*/ - else if(BuildInterrim(project, run, compiler, config, bitDepth, false)) + else if(BuildInterrim(project, run, compiler, config, bitDepth, false, false)) project.Run(args, compiler, config, bitDepth); delete args; delete compiler; @@ -1580,7 +1580,7 @@ class ProjectView : Window else if(project.GetDebug(config) || MessageBox { master = ide, type = okCancel, text = $"Starting Debug", contents = $"Attempting to debug non-debug configuration\nProceed anyways?" }.Modal() == ok) { - if(/*!IsProjectModified() ||*/ BuildInterrim(project, start, compiler, config, bitDepth, false)) + if(/*!IsProjectModified() ||*/ BuildInterrim(project, start, compiler, config, bitDepth, false, false)) { if(compiler.type.isVC) { @@ -1991,7 +1991,7 @@ class ProjectView : Window bool useValgrind = ide.workspace.useValgrind; bool result = false; - if(/*!IsProjectModified() ||*/ BuildInterrim(project, restart, compiler, config, bitDepth, false)) + if(/*!IsProjectModified() ||*/ BuildInterrim(project, restart, compiler, config, bitDepth, false, false)) { // For Restart, compiler and config will only be used if for // whatever reason (if at all possible) the Debugger is in a @@ -2029,7 +2029,7 @@ class ProjectView : Window int bitDepth = ide.workspace.bitDepth; bool useValgrind = ide.workspace.useValgrind; - if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start, compiler, config, bitDepth, false))) + if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start, compiler, config, bitDepth, false, false))) ide.debugger.StepInto(compiler, config, bitDepth, useValgrind); delete compiler; return true; @@ -2042,7 +2042,7 @@ class ProjectView : Window int bitDepth = ide.workspace.bitDepth; bool useValgrind = ide.workspace.useValgrind; - if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start, compiler, config, bitDepth, false))) + if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start, compiler, config, bitDepth, false, false))) ide.debugger.StepOver(compiler, config, bitDepth, useValgrind, skip); delete compiler; @@ -2056,7 +2056,7 @@ class ProjectView : Window int bitDepth = ide.workspace.bitDepth; bool useValgrind = ide.workspace.useValgrind; - if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start, compiler, config, bitDepth, false))) + if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start, compiler, config, bitDepth, false, false))) ide.debugger.StepUntil(compiler, config, bitDepth, useValgrind, skip); delete compiler;