fix, static explorer broken for runnable module after first execution

This commit is contained in:
Basile Burg 2015-01-02 05:55:25 +01:00
parent 8d6cb64fb2
commit 4caebcfa57
3 changed files with 22 additions and 18 deletions

View File

@ -1298,7 +1298,7 @@ procedure TCEMainForm.compileAndRunFile(const edIndex: NativeInt; const runArgs:
var var
editor: TCESynMemo; editor: TCESynMemo;
dmdproc: TProcess; dmdproc: TProcess;
fname: string; fname, fBasename: string;
begin begin
FreeRunnableProc; FreeRunnableProc;
@ -1316,9 +1316,14 @@ begin
subjLmFromString(fLogMessager, 'compiling ' + shortenPath(editor.fileName, 25), subjLmFromString(fLogMessager, 'compiling ' + shortenPath(editor.fileName, 25),
editor, amcEdit, amkInf); editor, amcEdit, amkInf);
if fileExists(editor.fileName) then editor.save if fileExists(editor.fileName) then begin
else editor.saveToFile(editor.tempFilename); editor.save;
fname := stripFileExt(editor.fileName); fname := editor.fileName;
end else begin
editor.saveTempFile;
fname := editor.tempFilename;
end;
fBasename := stripFileExt(fname);
if fRunnableSw = '' then if fRunnableSw = '' then
fRunnableSw := '-vcolumns'#13'-w'#13'-wi'; fRunnableSw := '-vcolumns'#13'-w'#13'-wi';
@ -1327,9 +1332,9 @@ begin
{$ENDIF} {$ENDIF}
dmdproc.Options := [poStdErrToOutput, poUsePipes]; dmdproc.Options := [poStdErrToOutput, poUsePipes];
dmdproc.Executable := DCompiler; dmdproc.Executable := DCompiler;
dmdproc.Parameters.Add(editor.fileName); dmdproc.Parameters.Add(fname);
dmdproc.Parameters.AddText(fRunnableSw); dmdproc.Parameters.AddText(fRunnableSw);
dmdproc.Parameters.Add('-of' + fname + exeExt); dmdproc.Parameters.Add('-of' + fBasename + exeExt);
LibMan.getLibFiles(nil, dmdproc.Parameters); LibMan.getLibFiles(nil, dmdproc.Parameters);
LibMan.getLibSources(nil, dmdproc.Parameters); LibMan.getLibSources(nil, dmdproc.Parameters);
dmdproc.Execute; dmdproc.Execute;
@ -1343,10 +1348,10 @@ begin
fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable); fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable);
if runArgs <> '' then if runArgs <> '' then
fRunProc.Parameters.DelimitedText := symbolExpander.get(runArgs); fRunProc.Parameters.DelimitedText := symbolExpander.get(runArgs);
fRunProc.Executable := fname + exeExt; fRunProc.Executable := fBasename + exeExt;
fPrInpWidg.process := fRunProc; fPrInpWidg.process := fRunProc;
fRunProc.Execute; fRunProc.Execute;
sysutils.DeleteFile(fname + objExt); sysutils.DeleteFile(fBasename + objExt);
end end
else begin else begin
subjLmFromString(fLogMessager, shortenPath(editor.fileName,25) subjLmFromString(fLogMessager, shortenPath(editor.fileName,25)

View File

@ -391,7 +391,6 @@ end;
procedure TCEStaticExplorerWidget.produceJsonInfo; procedure TCEStaticExplorerWidget.produceJsonInfo;
var var
srcFname, itm: string; srcFname, itm: string;
tempSrc: TStringList;
i: Integer; i: Integer;
begin begin
if fDoc = nil then exit; if fDoc = nil then exit;
@ -409,14 +408,8 @@ begin
fJsonFname := fDoc.tempFilename + '.json'; fJsonFname := fDoc.tempFilename + '.json';
srcFname := fDoc.fileName; srcFname := fDoc.fileName;
if not fileExists(srcFname) then begin if not fileExists(srcFname) then begin
tempSrc := TStringList.Create; srcFname := fDoc.tempFilename;
try fDoc.saveTempFile;
srcFname := fDoc.tempFilename;
tempSrc.Assign(fDoc.Lines);
tempSrc.SaveToFile(srcFname);
finally
tempSrc.Free;
end;
end; end;
//else fDoc.save; refreshonChange/autorefresh don't work until existing doc is saved //else fDoc.save; refreshonChange/autorefresh don't work until existing doc is saved
fDmdProc.Parameters.Add(srcFname); fDmdProc.Parameters.Add(srcFname);

View File

@ -98,6 +98,7 @@ type
procedure loadFromFile(const aFilename: string); procedure loadFromFile(const aFilename: string);
procedure saveToFile(const aFilename: string); procedure saveToFile(const aFilename: string);
procedure save; procedure save;
procedure saveTempFile;
// //
property Identifier: string read fIdentifier; property Identifier: string read fIdentifier;
property fileName: string read fFilename; property fileName: string read fFilename;
@ -430,7 +431,6 @@ begin
end; end;
procedure TCESynMemo.save; procedure TCESynMemo.save;
begin begin
Lines.SaveToFile(fFilename); Lines.SaveToFile(fFilename);
FileAge(fFilename, fFileDate); FileAge(fFilename, fFileDate);
@ -439,6 +439,12 @@ begin
subjDocChanged(TCEMultiDocSubject(fMultiDocSubject), self); subjDocChanged(TCEMultiDocSubject(fMultiDocSubject), self);
end; end;
procedure TCESynMemo.saveTempFile;
begin
Lines.SaveToFile(fTempFileName);
fModified := false;
end;
procedure TCESynMemo.saveCache; procedure TCESynMemo.saveCache;
var var
cache: TCESynMemoCache; cache: TCESynMemoCache;