mirror of https://gitlab.com/basile.b/dexed.git
fix, dcd broken, zombies has to be killed before a query, not after
This commit is contained in:
parent
3d1e964db3
commit
abd7e09552
|
@ -25,6 +25,7 @@ type
|
||||||
fDoc: TCESynMemo;
|
fDoc: TCESynMemo;
|
||||||
fProj: TCEProject;
|
fProj: TCEProject;
|
||||||
procedure killServer;
|
procedure killServer;
|
||||||
|
procedure terminateClient;
|
||||||
//
|
//
|
||||||
procedure projNew(aProject: TCEProject);
|
procedure projNew(aProject: TCEProject);
|
||||||
procedure projChanged(aProject: TCEProject);
|
procedure projChanged(aProject: TCEProject);
|
||||||
|
@ -91,6 +92,8 @@ begin
|
||||||
if fTempLines <> nil then
|
if fTempLines <> nil then
|
||||||
fTempLines.Free;
|
fTempLines.Free;
|
||||||
killServer;
|
killServer;
|
||||||
|
fServer.Free;
|
||||||
|
fClient.Free;
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
@ -161,6 +164,12 @@ end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION DCD things ------------------------------------------------------------}
|
{$REGION DCD things ------------------------------------------------------------}
|
||||||
|
procedure TCEDcdWrapper.terminateClient;
|
||||||
|
begin
|
||||||
|
if fClient.Running then
|
||||||
|
fClient.Terminate(0);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEDcdWrapper.killServer;
|
procedure TCEDcdWrapper.killServer;
|
||||||
begin
|
begin
|
||||||
if not fAvailable then exit;
|
if not fAvailable then exit;
|
||||||
|
@ -171,6 +180,7 @@ begin
|
||||||
fClient.Execute;
|
fClient.Execute;
|
||||||
{$IFDEF LINUX}
|
{$IFDEF LINUX}
|
||||||
fClient.Terminate(0);
|
fClient.Terminate(0);
|
||||||
|
fServer.Terminate(0);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -187,9 +197,6 @@ begin
|
||||||
fClient.Parameters.Clear;
|
fClient.Parameters.Clear;
|
||||||
fClient.Parameters.Add('-I' + aFolder);
|
fClient.Parameters.Add('-I' + aFolder);
|
||||||
fClient.Execute;
|
fClient.Execute;
|
||||||
{$IFDEF LINUX}
|
|
||||||
fClient.Terminate(0);
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEDcdWrapper.getComplAtCursor(aList: TStrings);
|
procedure TCEDcdWrapper.getComplAtCursor(aList: TStrings);
|
||||||
|
@ -205,6 +212,7 @@ begin
|
||||||
fTempLines.Assign(fDoc.Lines);
|
fTempLines.Assign(fDoc.Lines);
|
||||||
fTempLines.SaveToFile(fDoc.tempFilename);
|
fTempLines.SaveToFile(fDoc.tempFilename);
|
||||||
//
|
//
|
||||||
|
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));
|
||||||
|
@ -212,9 +220,6 @@ begin
|
||||||
fClient.Execute;
|
fClient.Execute;
|
||||||
//
|
//
|
||||||
fTempLines.LoadFromStream(fClient.Output);
|
fTempLines.LoadFromStream(fClient.Output);
|
||||||
{$IFDEF LINUX}
|
|
||||||
fClient.Terminate(0);
|
|
||||||
{$ENDIF}
|
|
||||||
if fTempLines.Count = 0 then exit;
|
if fTempLines.Count = 0 then exit;
|
||||||
//
|
//
|
||||||
asComp := fTempLines.Strings[0] = 'identifiers';
|
asComp := fTempLines.Strings[0] = 'identifiers';
|
||||||
|
@ -261,6 +266,7 @@ begin
|
||||||
fTempLines.Assign(fDoc.Lines);
|
fTempLines.Assign(fDoc.Lines);
|
||||||
fTempLines.SaveToFile(fDoc.tempFilename);
|
fTempLines.SaveToFile(fDoc.tempFilename);
|
||||||
//
|
//
|
||||||
|
terminateClient;
|
||||||
fClient.Parameters.Clear;
|
fClient.Parameters.Clear;
|
||||||
fClient.Parameters.Add('-d');
|
fClient.Parameters.Add('-d');
|
||||||
fClient.Parameters.Add('-c');
|
fClient.Parameters.Add('-c');
|
||||||
|
@ -270,12 +276,8 @@ begin
|
||||||
//
|
//
|
||||||
aComment := '';
|
aComment := '';
|
||||||
fTempLines.LoadFromStream(fClient.Output);
|
fTempLines.LoadFromStream(fClient.Output);
|
||||||
{$IFDEF LINUX}
|
|
||||||
fClient.Terminate(0);
|
|
||||||
{$ENDIF}
|
|
||||||
for i := 0 to fTempLines.Count-1 do
|
for i := 0 to fTempLines.Count-1 do
|
||||||
aComment += ReplaceStr(fTempLines.Strings[i], '\n', LineEnding);
|
aComment += ReplaceStr(fTempLines.Strings[i], '\n', LineEnding);
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEDcdWrapper.getDeclFromCursor(out aFilename: string; out aPosition: Integer);
|
procedure TCEDcdWrapper.getDeclFromCursor(out aFilename: string; out aPosition: Integer);
|
||||||
|
@ -289,6 +291,7 @@ begin
|
||||||
fTempLines.Assign(fDoc.Lines);
|
fTempLines.Assign(fDoc.Lines);
|
||||||
fTempLines.SaveToFile(fDoc.tempFilename);
|
fTempLines.SaveToFile(fDoc.tempFilename);
|
||||||
//
|
//
|
||||||
|
terminateClient;
|
||||||
fClient.Parameters.Clear;
|
fClient.Parameters.Clear;
|
||||||
fClient.Parameters.Add('-l');
|
fClient.Parameters.Add('-l');
|
||||||
fClient.Parameters.Add('-c');
|
fClient.Parameters.Add('-c');
|
||||||
|
@ -299,9 +302,6 @@ begin
|
||||||
str := 'a';
|
str := 'a';
|
||||||
setlength(str, 256);
|
setlength(str, 256);
|
||||||
i := fClient.Output.Read(str[1], 256);
|
i := fClient.Output.Read(str[1], 256);
|
||||||
{$IFDEF LINUX}
|
|
||||||
fClient.Terminate(0);
|
|
||||||
{$ENDIF}
|
|
||||||
setLength(str, i);
|
setLength(str, i);
|
||||||
if str <> '' then
|
if str <> '' then
|
||||||
begin
|
begin
|
||||||
|
|
Loading…
Reference in New Issue