diff --git a/lazproj/test/src/expandSymString.d b/lazproj/test/src/expandSymString.d index dc34a19c..8b9996b0 100644 --- a/lazproj/test/src/expandSymString.d +++ b/lazproj/test/src/expandSymString.d @@ -6,9 +6,10 @@ import std.getopt; /* pass: ---a= --b= --c= --d= --e= --f= --g= --h= +--a= --b= --c= --d= --e= --f= --g= --h= --j= --k= as parameters in "Run, Compile and Run file..." +: only the first item is displayed but the symbol is expanded as expected. */ void main(string args[]) { diff --git a/src/ce_customtools.pas b/src/ce_customtools.pas index 2773e919..bcc8f63f 100644 --- a/src/ce_customtools.pas +++ b/src/ce_customtools.pas @@ -88,7 +88,7 @@ begin proc.Parameters.Clear; for i:= 0 to fParameters.Count-1 do if fParameters.Strings[i] <> '' then - proc.Parameters.Add(CEMainForm.expandSymbolicString(fParameters.Strings[i])); + proc.Parameters.AddText(CEMainForm.expandSymbolicString(fParameters.Strings[i])); proc.Options := proc.Options - [poUsePipes, poWaitOnExit]; proc.Execute; finally diff --git a/src/ce_dmdwrap.pas b/src/ce_dmdwrap.pas index 4d9c9baf..d1145909 100644 --- a/src/ce_dmdwrap.pas +++ b/src/ce_dmdwrap.pas @@ -920,7 +920,7 @@ begin str2 := '-' + str1 else str2 := str1; - aList.Add(CEMainForm.expandSymbolicString(str2)); + aList.AddText(CEMainForm.expandSymbolicString(str2)); end; end; diff --git a/src/ce_main.pas b/src/ce_main.pas index 1e596e1d..6e6b6e5c 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -1268,7 +1268,7 @@ var dmdproc: TProcess; ppproc: TProcess; olddir, prjpath, ppname: string; - i: NativeInt; + i, j: NativeInt; begin fMesgWidg.ClearAllMessages; @@ -1283,8 +1283,11 @@ begin try preBuildProcess.setProcess(ppproc); ppproc.Executable := ppname; - for i:= 0 to ppproc.Parameters.Count-1 do - ppproc.Parameters.Strings[i] := expandSymbolicString(ppproc.Parameters.Strings[i]); + j := ppproc.Parameters.Count-1; + for i:= 0 to j do + ppproc.Parameters.AddText(expandSymbolicString(ppproc.Parameters.Strings[i])); + for i:= 0 to j do + ppproc.Parameters.Delete(0); if ppproc.CurrentDirectory = '' then ppproc.CurrentDirectory := extractFilePath(ppproc.Executable); ppproc.Execute; @@ -1342,8 +1345,11 @@ begin try postBuildProcess.setProcess(ppproc); ppproc.Executable := ppname; - for i:= 0 to ppproc.Parameters.Count-1 do - ppproc.Parameters.Strings[i] := expandSymbolicString(ppproc.Parameters.Strings[i]); + j := ppproc.Parameters.Count-1; + for i:= 0 to j do + ppproc.Parameters.AddText(expandSymbolicString(ppproc.Parameters.Strings[i])); + for i:= 0 to j do + ppproc.Parameters.Delete(0); if ppproc.CurrentDirectory = '' then ppproc.CurrentDirectory := extractFilePath(ppproc.Executable); ppproc.Execute; @@ -1724,7 +1730,7 @@ var elems: TStringList; elem: string; begs, ends: boolean; - i: integer; + i, j, extLen: integer; begin if symString = '' then exit('``'); @@ -1769,6 +1775,28 @@ begin if fileExists(fProject.fileName) then result += fProject.fileName; end; + 'CPFS', 'CurrentProjectFiles': + begin + if fProject <> nil then + if fileExists(fProject.fileName) then + for j := 0 to fProject.Sources.Count-1 do + begin + result += fProject.getAbsoluteSourceName(j); + if fProject.Sources.Count > 1 then + if j <> fProject.Sources.Count-1 then + result += LineEnding; + end; + end; + 'CPN', 'CurrentProjectName': + begin + if fProject <> nil then + if fileExists(fProject.fileName) then + begin + result += extractFileName(fProject.fileName); + extLen := length(ExtractFileExt(result)); + result := result[1..length(result)-extLen]; + end; + end; 'CPP', 'CurrentProjectPath': begin if fProject <> nil then