From 4caebcfa57667c268b4b411404d4f42dbd360376 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Fri, 2 Jan 2015 05:55:25 +0100 Subject: [PATCH] fix, static explorer broken for runnable module after first execution --- src/ce_main.pas | 21 +++++++++++++-------- src/ce_staticexplorer.pas | 11 ++--------- src/ce_synmemo.pas | 8 +++++++- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/ce_main.pas b/src/ce_main.pas index 2061cbab..e01d6a7d 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -1298,7 +1298,7 @@ procedure TCEMainForm.compileAndRunFile(const edIndex: NativeInt; const runArgs: var editor: TCESynMemo; dmdproc: TProcess; - fname: string; + fname, fBasename: string; begin FreeRunnableProc; @@ -1316,9 +1316,14 @@ begin subjLmFromString(fLogMessager, 'compiling ' + shortenPath(editor.fileName, 25), editor, amcEdit, amkInf); - if fileExists(editor.fileName) then editor.save - else editor.saveToFile(editor.tempFilename); - fname := stripFileExt(editor.fileName); + if fileExists(editor.fileName) then begin + editor.save; + fname := editor.fileName; + end else begin + editor.saveTempFile; + fname := editor.tempFilename; + end; + fBasename := stripFileExt(fname); if fRunnableSw = '' then fRunnableSw := '-vcolumns'#13'-w'#13'-wi'; @@ -1327,9 +1332,9 @@ begin {$ENDIF} dmdproc.Options := [poStdErrToOutput, poUsePipes]; dmdproc.Executable := DCompiler; - dmdproc.Parameters.Add(editor.fileName); + dmdproc.Parameters.Add(fname); dmdproc.Parameters.AddText(fRunnableSw); - dmdproc.Parameters.Add('-of' + fname + exeExt); + dmdproc.Parameters.Add('-of' + fBasename + exeExt); LibMan.getLibFiles(nil, dmdproc.Parameters); LibMan.getLibSources(nil, dmdproc.Parameters); dmdproc.Execute; @@ -1343,10 +1348,10 @@ begin fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable); if runArgs <> '' then fRunProc.Parameters.DelimitedText := symbolExpander.get(runArgs); - fRunProc.Executable := fname + exeExt; + fRunProc.Executable := fBasename + exeExt; fPrInpWidg.process := fRunProc; fRunProc.Execute; - sysutils.DeleteFile(fname + objExt); + sysutils.DeleteFile(fBasename + objExt); end else begin subjLmFromString(fLogMessager, shortenPath(editor.fileName,25) diff --git a/src/ce_staticexplorer.pas b/src/ce_staticexplorer.pas index a3499081..7b1b702e 100644 --- a/src/ce_staticexplorer.pas +++ b/src/ce_staticexplorer.pas @@ -391,7 +391,6 @@ end; procedure TCEStaticExplorerWidget.produceJsonInfo; var srcFname, itm: string; - tempSrc: TStringList; i: Integer; begin if fDoc = nil then exit; @@ -409,14 +408,8 @@ begin fJsonFname := fDoc.tempFilename + '.json'; srcFname := fDoc.fileName; if not fileExists(srcFname) then begin - tempSrc := TStringList.Create; - try - srcFname := fDoc.tempFilename; - tempSrc.Assign(fDoc.Lines); - tempSrc.SaveToFile(srcFname); - finally - tempSrc.Free; - end; + srcFname := fDoc.tempFilename; + fDoc.saveTempFile; end; //else fDoc.save; refreshonChange/autorefresh don't work until existing doc is saved fDmdProc.Parameters.Add(srcFname); diff --git a/src/ce_synmemo.pas b/src/ce_synmemo.pas index ddf514b7..3152826b 100644 --- a/src/ce_synmemo.pas +++ b/src/ce_synmemo.pas @@ -98,6 +98,7 @@ type procedure loadFromFile(const aFilename: string); procedure saveToFile(const aFilename: string); procedure save; + procedure saveTempFile; // property Identifier: string read fIdentifier; property fileName: string read fFilename; @@ -430,7 +431,6 @@ begin end; procedure TCESynMemo.save; - begin Lines.SaveToFile(fFilename); FileAge(fFilename, fFileDate); @@ -439,6 +439,12 @@ begin subjDocChanged(TCEMultiDocSubject(fMultiDocSubject), self); end; +procedure TCESynMemo.saveTempFile; +begin + Lines.SaveToFile(fTempFileName); + fModified := false; +end; + procedure TCESynMemo.saveCache; var cache: TCESynMemoCache;