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
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)

View File

@ -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);

View File

@ -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;