DCD integration, write source to input rather than using tmp file

This commit is contained in:
Basile Burg 2015-09-01 02:32:07 +02:00
parent e72f558ff1
commit 130e11606e
1 changed files with 15 additions and 18 deletions

View File

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