mirror of https://gitlab.com/basile.b/dexed.git
DCD wrapper, add support for import path removal
This commit is contained in:
parent
7439aea55e
commit
0872eb54d0
|
@ -10,7 +10,7 @@ uses
|
||||||
windows,
|
windows,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
ce_common, ce_writableComponent, ce_interfaces, ce_observer, ce_synmemo,
|
ce_common, ce_writableComponent, ce_interfaces, ce_observer, ce_synmemo,
|
||||||
ce_stringrange, ce_projutils;
|
ce_stringrange, ce_projutils, ce_semver;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
@ -37,6 +37,8 @@ type
|
||||||
fDoc: TCESynMemo;
|
fDoc: TCESynMemo;
|
||||||
fProj: ICECommonProject;
|
fProj: ICECommonProject;
|
||||||
fPortAsProcParam: string;
|
fPortAsProcParam: string;
|
||||||
|
fVersion: TSemVer;
|
||||||
|
fCanRemove: boolean;
|
||||||
procedure killServer;
|
procedure killServer;
|
||||||
procedure terminateClient; {$IFNDEF DEBUG}inline;{$ENDIF}
|
procedure terminateClient; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||||
procedure waitClient; {$IFNDEF DEBUG}inline;{$ENDIF}
|
procedure waitClient; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||||
|
@ -69,6 +71,8 @@ type
|
||||||
//
|
//
|
||||||
procedure addImportFolders(const folders: TStrings);
|
procedure addImportFolders(const folders: TStrings);
|
||||||
procedure addImportFolder(const folder: string);
|
procedure addImportFolder(const folder: string);
|
||||||
|
procedure remImportFolder(const folder: string);
|
||||||
|
procedure remImportFolders(const folders: TStrings);
|
||||||
procedure getComplAtCursor(list: TStringList);
|
procedure getComplAtCursor(list: TStringList);
|
||||||
procedure getCallTip(out tips: string);
|
procedure getCallTip(out tips: string);
|
||||||
procedure getDdocFromCursor(out comment: string);
|
procedure getDdocFromCursor(out comment: string);
|
||||||
|
@ -97,9 +101,11 @@ constructor TCEDcdWrapper.create(aOwner: TComponent);
|
||||||
var
|
var
|
||||||
fname: string;
|
fname: string;
|
||||||
i: integer = 0;
|
i: integer = 0;
|
||||||
|
r: TSemVer;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
|
||||||
|
fVersion.init('v0.0.0');
|
||||||
fname := getCoeditDocPath + optsname;
|
fname := getCoeditDocPath + optsname;
|
||||||
if fname.fileExists then
|
if fname.fileExists then
|
||||||
loadFromFile(fname);
|
loadFromFile(fname);
|
||||||
|
@ -134,6 +140,16 @@ begin
|
||||||
fTempLines := TStringList.Create;
|
fTempLines := TStringList.Create;
|
||||||
fImportCache := TStringHashSet.Create;
|
fImportCache := TStringHashSet.Create;
|
||||||
|
|
||||||
|
fClient.Parameters.Add('--version');
|
||||||
|
fClient.Execute;
|
||||||
|
processOutputToStrings(fClient, fTempLines);
|
||||||
|
while fClient.Running do ;
|
||||||
|
fVersion.init(fTempLines.strictText);
|
||||||
|
r.major := 0;
|
||||||
|
r.minor := 9;
|
||||||
|
r.patch := 10;
|
||||||
|
fCanRemove := fVersion > r;
|
||||||
|
|
||||||
if fServer.isNotNil then
|
if fServer.isNotNil then
|
||||||
begin
|
begin
|
||||||
fServer.Execute;
|
fServer.Execute;
|
||||||
|
@ -430,6 +446,49 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEDcdWrapper.remImportFolder(const folder: string);
|
||||||
|
begin
|
||||||
|
if not fCanRemove then
|
||||||
|
exit;
|
||||||
|
if not fAvailable or not fServerListening or not fImportCache.contains(folder) then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
fImportCache.delete(folder);
|
||||||
|
fClient.Parameters.Clear;
|
||||||
|
tryAddTcpParams;
|
||||||
|
fClient.Parameters.Add('-R' + folder);
|
||||||
|
fClient.Execute;
|
||||||
|
while fClient.Running do ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEDcdWrapper.remImportFolders(const folders: TStrings);
|
||||||
|
var
|
||||||
|
i: string;
|
||||||
|
c: integer;
|
||||||
|
begin
|
||||||
|
if not fCanRemove then
|
||||||
|
exit;
|
||||||
|
if not fAvailable or not fServerListening then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
fClient.Parameters.Clear;
|
||||||
|
tryAddTcpParams;
|
||||||
|
c := folders.Count;
|
||||||
|
for i in folders do
|
||||||
|
begin
|
||||||
|
if not fImportCache.contains(i) then
|
||||||
|
continue;
|
||||||
|
fImportCache.delete(i);
|
||||||
|
fClient.Parameters.Add('-R' + i);
|
||||||
|
dec(c);
|
||||||
|
end;
|
||||||
|
if c <> folders.Count then
|
||||||
|
begin
|
||||||
|
fClient.Execute;
|
||||||
|
while fClient.Running do ;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEDcdWrapper.getCallTip(out tips: string);
|
procedure TCEDcdWrapper.getCallTip(out tips: string);
|
||||||
begin
|
begin
|
||||||
if not fAvailable or not fServerListening or fDoc.isNil then
|
if not fAvailable or not fServerListening or fDoc.isNil then
|
||||||
|
|
Loading…
Reference in New Issue