mirror of https://gitlab.com/basile.b/dexed.git
dcd, dub, dependencies with a 'src' or a 'source' folder are passed to the server
This commit is contained in:
parent
0c4510cad4
commit
898171c9cf
|
@ -733,14 +733,70 @@ procedure TCEDubProject.updateImportPathsFromJson;
|
||||||
fImportPaths.Add(arr.Strings[i]);
|
fImportPaths.Add(arr.Strings[i]);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
// note: dependencies are added as import to allow DCD completion
|
||||||
|
// see TCEDcdWrapper.projChanged()
|
||||||
|
procedure addDepsFrom(obj: TJSONObject);
|
||||||
|
var
|
||||||
|
folds: TStringList;
|
||||||
|
deps: TJSONObject;
|
||||||
|
item: TJSONData;
|
||||||
|
pth: string;
|
||||||
|
str: string;
|
||||||
|
i,j,k: integer;
|
||||||
|
begin
|
||||||
|
item := obj.Find('dependencies');
|
||||||
|
if assigned(item) then
|
||||||
|
begin
|
||||||
|
{$IFDEF WINDOWS}
|
||||||
|
pth := GetEnvironmentVariable('APPDATA') + '\dub\packages\';
|
||||||
|
{$ELSE}
|
||||||
|
pth := GetEnvironmentVariable('HOME') + '/.dub/packages/';
|
||||||
|
{$ENDIF}
|
||||||
|
deps := TJSONObject(item);
|
||||||
|
folds := TStringList.Create;
|
||||||
|
listFolders(folds, pth);
|
||||||
|
try
|
||||||
|
// remove semver from folder names
|
||||||
|
for i := 0 to folds.Count-1 do
|
||||||
|
begin
|
||||||
|
str := folds[i];
|
||||||
|
k := -1;
|
||||||
|
for j := 1 to length(str) do
|
||||||
|
if str[j] = '-' then
|
||||||
|
k := j;
|
||||||
|
if k <> -1 then
|
||||||
|
folds[i] := str[1..k-1] + '=' + str[k .. length(str)];
|
||||||
|
end;
|
||||||
|
// add as import if names match
|
||||||
|
for i := 0 to deps.Count-1 do
|
||||||
|
begin
|
||||||
|
str := pth + deps.Names[i];
|
||||||
|
if folds.IndexOfName(str) <> -1 then
|
||||||
|
begin
|
||||||
|
if (str + folds.Values[str] + DirectorySeparator + 'source').dirExists then
|
||||||
|
fImportPaths.Add(str + DirectorySeparator + 'source')
|
||||||
|
else if (str + folds.Values[str] + DirectorySeparator + 'src').dirExists then
|
||||||
|
fImportPaths.Add(str + DirectorySeparator + 'src');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
folds.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
var
|
var
|
||||||
conf: TJSONObject;
|
conf: TJSONObject;
|
||||||
begin
|
begin
|
||||||
if fJSON.isNil then exit;
|
if fJSON.isNil then exit;
|
||||||
//
|
//
|
||||||
addFrom(fJSON);
|
addFrom(fJSON);
|
||||||
|
addDepsFrom(fJSON);
|
||||||
conf := getCurrentCustomConfig;
|
conf := getCurrentCustomConfig;
|
||||||
if conf.isNotNil then addFrom(conf);
|
if conf.isNotNil then
|
||||||
|
begin
|
||||||
|
addFrom(conf);
|
||||||
|
addDepsFrom(conf);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEDubProject.updateOutputNameFromJson;
|
procedure TCEDubProject.updateOutputNameFromJson;
|
||||||
|
|
|
@ -281,7 +281,7 @@ To do so, the application option _Native project compiler_ must be set according
|
||||||
|
|
||||||
# DUB projects.
|
# DUB projects.
|
||||||
|
|
||||||
Since the version 2 alpha 1, Coedit also handles [DUB](http://code.dlang.org/getting_started) projects.
|
Since the version 2, Coedit also handles [DUB](http://code.dlang.org/getting_started) projects.
|
||||||
|
|
||||||
DUB project description must be in [JSON format](http://code.dlang.org/package-format?lang=json), [SDL](http://code.dlang.org/package-format?lang=sdl) in not supported.
|
DUB project description must be in [JSON format](http://code.dlang.org/package-format?lang=json), [SDL](http://code.dlang.org/package-format?lang=sdl) in not supported.
|
||||||
|
|
||||||
|
@ -304,7 +304,7 @@ They can be put elsewhere, as long as the target directory is a known operating
|
||||||
### Imports
|
### Imports
|
||||||
|
|
||||||
In _Coedit_, _DCD_ relies on the [library manager][lnk_widg_lib] entries and on the project parameters.
|
In _Coedit_, _DCD_ relies on the [library manager][lnk_widg_lib] entries and on the project parameters.
|
||||||
If the [_libman_][lnk_widg_lib] is empty then the DCD features will be limited to the content of the current editor or to the content of the other project modules.
|
If the [_libman_][lnk_widg_lib] is empty then the the scope of DCD is limited to the current module or the to the current project sources and imports.
|
||||||
To prevent that, it's absolutely necessary to add at least _phobos_ and _core_ to the [_libman_][lnk_widg_lib] (if not automatically done the first time CE is executed).
|
To prevent that, it's absolutely necessary to add at least _phobos_ and _core_ to the [_libman_][lnk_widg_lib] (if not automatically done the first time CE is executed).
|
||||||
|
|
||||||
_DCD_ also has a native configuration system. Refer to the official [_Readme_](https://github.com/Hackerpilot/DCD#configuration-files).
|
_DCD_ also has a native configuration system. Refer to the official [_Readme_](https://github.com/Hackerpilot/DCD#configuration-files).
|
||||||
|
@ -327,10 +327,10 @@ Documentation comments associated to a symbol are displayed when hovering the sy
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
When Coedit starts and if the DCD server is not already listening then it's launched automatically.
|
When Coedit starts and if the DCD server is not already listening then it's launched by CE.
|
||||||
When Coedit stops, the server is automatically shut-down if it was not already running when starting.
|
When Coedit stops, the server is automatically shut-down if it was not already running when starting.
|
||||||
Under Linux it's recommended not to let Coedit start the server.
|
|
||||||
If DCD server crashes while Coedit is running then both must be restarted.
|
If the DCD server crashes while Coedit is running then both must be restarted.
|
||||||
|
|
||||||
It's also advisable to setup [Dscanner](https://github.com/Hackerpilot/Dscanner), from the same author, as a Coedit [custom tool][lnk_widg_tools].
|
It's also advisable to setup [Dscanner](https://github.com/Hackerpilot/Dscanner), from the same author, as a Coedit [custom tool][lnk_widg_tools].
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue