mirror of https://gitlab.com/basile.b/dexed.git
DCD integration, write source to input rather than using tmp file
This commit is contained in:
parent
e72f558ff1
commit
130e11606e
|
@ -22,6 +22,7 @@ type
|
||||||
TCEDcdWrapper = class(TWritableLfmTextComponent, ICEProjectObserver, ICEMultiDocObserver)
|
TCEDcdWrapper = class(TWritableLfmTextComponent, ICEProjectObserver, ICEMultiDocObserver)
|
||||||
private
|
private
|
||||||
fTempLines: TStringList;
|
fTempLines: TStringList;
|
||||||
|
fInputSource: string;
|
||||||
fImportCache: TStringList;
|
fImportCache: TStringList;
|
||||||
//fPortNum: Word;
|
//fPortNum: Word;
|
||||||
fServerWasRunning: boolean;
|
fServerWasRunning: boolean;
|
||||||
|
@ -31,9 +32,10 @@ type
|
||||||
fDoc: TCESynMemo;
|
fDoc: TCESynMemo;
|
||||||
fProj: TCENativeProject;
|
fProj: TCENativeProject;
|
||||||
procedure killServer;
|
procedure killServer;
|
||||||
procedure terminateClient;
|
procedure terminateClient; inline;
|
||||||
procedure waitClient;
|
procedure waitClient; inline;
|
||||||
procedure updateServerlistening;
|
procedure updateServerlistening;
|
||||||
|
procedure writeSourceToInput; inline;
|
||||||
//
|
//
|
||||||
procedure projNew(aProject: ICECommonProject);
|
procedure projNew(aProject: ICECommonProject);
|
||||||
procedure projChanged(aProject: ICECommonProject);
|
procedure projChanged(aProject: ICECommonProject);
|
||||||
|
@ -233,6 +235,13 @@ begin
|
||||||
sleep(5);
|
sleep(5);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEDcdWrapper.writeSourceToInput;
|
||||||
|
begin
|
||||||
|
fInputSource := fDoc.Text;
|
||||||
|
fClient.Input.Write(fInputSource[1], length(fInputSource));
|
||||||
|
fClient.CloseInput;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEDcdWrapper.addImportFolder(const aFolder: string);
|
procedure TCEDcdWrapper.addImportFolder(const aFolder: string);
|
||||||
begin
|
begin
|
||||||
if not fAvailable then exit;
|
if not fAvailable then exit;
|
||||||
|
@ -252,16 +261,13 @@ begin
|
||||||
if not fServerListening then exit;
|
if not fServerListening then exit;
|
||||||
if fDoc = nil then exit;
|
if fDoc = nil then exit;
|
||||||
//
|
//
|
||||||
fTempLines.Assign(fDoc.Lines);
|
|
||||||
fTempLines.SaveToFile(fDoc.tempFilename);
|
|
||||||
//
|
|
||||||
terminateClient;
|
terminateClient;
|
||||||
//
|
//
|
||||||
fClient.Parameters.Clear;
|
fClient.Parameters.Clear;
|
||||||
fClient.Parameters.Add('-c');
|
fClient.Parameters.Add('-c');
|
||||||
fClient.Parameters.Add(intToStr(fDoc.SelStart - 1));
|
fClient.Parameters.Add(intToStr(fDoc.SelStart - 1));
|
||||||
fClient.Parameters.Add(fDoc.tempFilename);
|
|
||||||
fClient.Execute;
|
fClient.Execute;
|
||||||
|
writeSourceToInput;
|
||||||
//
|
//
|
||||||
fTempLines.LoadFromStream(fClient.Output);
|
fTempLines.LoadFromStream(fClient.Output);
|
||||||
if fTempLines.Count = 0 then
|
if fTempLines.Count = 0 then
|
||||||
|
@ -286,16 +292,13 @@ begin
|
||||||
if not fServerListening then exit;
|
if not fServerListening then exit;
|
||||||
if fDoc = nil then exit;
|
if fDoc = nil then exit;
|
||||||
//
|
//
|
||||||
fTempLines.Assign(fDoc.Lines);
|
|
||||||
fTempLines.SaveToFile(fDoc.tempFilename);
|
|
||||||
//
|
|
||||||
terminateClient;
|
terminateClient;
|
||||||
//
|
//
|
||||||
fClient.Parameters.Clear;
|
fClient.Parameters.Clear;
|
||||||
fClient.Parameters.Add('-c');
|
fClient.Parameters.Add('-c');
|
||||||
fClient.Parameters.Add(intToStr(fDoc.SelStart - 1));
|
fClient.Parameters.Add(intToStr(fDoc.SelStart - 1));
|
||||||
fClient.Parameters.Add(fDoc.tempFilename);
|
|
||||||
fClient.Execute;
|
fClient.Execute;
|
||||||
|
writeSourceToInput;
|
||||||
//
|
//
|
||||||
fTempLines.LoadFromStream(fClient.Output);
|
fTempLines.LoadFromStream(fClient.Output);
|
||||||
if fTempLines.Count = 0 then
|
if fTempLines.Count = 0 then
|
||||||
|
@ -346,17 +349,14 @@ begin
|
||||||
i := fDoc.MouseStart;
|
i := fDoc.MouseStart;
|
||||||
if i = 0 then exit;
|
if i = 0 then exit;
|
||||||
//
|
//
|
||||||
fTempLines.Assign(fDoc.Lines);
|
|
||||||
fTempLines.SaveToFile(fDoc.tempFilename);
|
|
||||||
//
|
|
||||||
terminateClient;
|
terminateClient;
|
||||||
//
|
//
|
||||||
fClient.Parameters.Clear;
|
fClient.Parameters.Clear;
|
||||||
fClient.Parameters.Add('-d');
|
fClient.Parameters.Add('-d');
|
||||||
fClient.Parameters.Add('-c');
|
fClient.Parameters.Add('-c');
|
||||||
fClient.Parameters.Add(intToStr(i - 1));
|
fClient.Parameters.Add(intToStr(i - 1));
|
||||||
fClient.Parameters.Add(fDoc.tempFilename);
|
|
||||||
fClient.Execute;
|
fClient.Execute;
|
||||||
|
writeSourceToInput;
|
||||||
//
|
//
|
||||||
aComment := '';
|
aComment := '';
|
||||||
fTempLines.LoadFromStream(fClient.Output);
|
fTempLines.LoadFromStream(fClient.Output);
|
||||||
|
@ -380,17 +380,14 @@ begin
|
||||||
if not fServerListening then exit;
|
if not fServerListening then exit;
|
||||||
if fDoc = nil then exit;
|
if fDoc = nil then exit;
|
||||||
//
|
//
|
||||||
fTempLines.Assign(fDoc.Lines);
|
|
||||||
fTempLines.SaveToFile(fDoc.tempFilename);
|
|
||||||
//
|
|
||||||
terminateClient;
|
terminateClient;
|
||||||
//
|
//
|
||||||
fClient.Parameters.Clear;
|
fClient.Parameters.Clear;
|
||||||
fClient.Parameters.Add('-l');
|
fClient.Parameters.Add('-l');
|
||||||
fClient.Parameters.Add('-c');
|
fClient.Parameters.Add('-c');
|
||||||
fClient.Parameters.Add(intToStr(fDoc.SelStart - 1));
|
fClient.Parameters.Add(intToStr(fDoc.SelStart - 1));
|
||||||
fClient.Parameters.Add(fDoc.tempFilename);
|
|
||||||
fClient.Execute;
|
fClient.Execute;
|
||||||
|
writeSourceToInput;
|
||||||
//
|
//
|
||||||
str := 'a';
|
str := 'a';
|
||||||
setlength(str, 256);
|
setlength(str, 256);
|
||||||
|
|
Loading…
Reference in New Issue