From b810daaa8f36e7835d004ef4743cc1dfff190098 Mon Sep 17 00:00:00 2001 From: WebFreak001 Date: Sun, 5 Jun 2016 02:03:16 +0200 Subject: [PATCH 1/4] Added support for single files as import paths (fix #278) --- src/server/autocomplete.d | 54 ++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/server/autocomplete.d b/src/server/autocomplete.d index a871939..03287f7 100644 --- a/src/server/autocomplete.d +++ b/src/server/autocomplete.d @@ -643,35 +643,53 @@ void setImportCompletions(T)(T tokens, ref AutocompleteResponse response, bool found = false; - foreach (importDirectory; cache.getImportPaths()) + foreach (importPath; cache.getImportPaths()) { - string p = buildPath(importDirectory, path); - if (!exists(p)) - continue; - - found = true; - - foreach (string name; dirEntries(p, SpanMode.shallow)) + if (importPath.isFile) { - import std.path: baseName; - if (name.baseName.startsWith(".#")) + if (!exists(importPath)) continue; - auto n = name.baseName(".d").baseName(".di"); - if (isFile(name) && (name.endsWith(".d") || name.endsWith(".di")) - && (partial is null || n.startsWith(partial))) + found = true; + + auto n = importPath.baseName(".d").baseName(".di"); + if (isFile(importPath) && (importPath.endsWith(".d") || importPath.endsWith(".di")) + && (partial is null || n.startsWith(partial))) { response.completions ~= n; response.completionKinds ~= CompletionKind.moduleName; } - else if (isDir(name)) + } + else + { + string p = buildPath(importPath, path); + if (!exists(p)) + continue; + + found = true; + + foreach (string name; dirEntries(p, SpanMode.shallow)) { - if (n[0] != '.' && (partial is null || n.startsWith(partial))) + import std.path: baseName; + if (name.baseName.startsWith(".#")) + continue; + + auto n = name.baseName(".d").baseName(".di"); + if (isFile(name) && (name.endsWith(".d") || name.endsWith(".di")) + && (partial is null || n.startsWith(partial))) { response.completions ~= n; - response.completionKinds ~= - exists(buildPath(name, "package.d")) || exists(buildPath(name, "package.di")) - ? CompletionKind.moduleName : CompletionKind.packageName; + response.completionKinds ~= CompletionKind.moduleName; + } + else if (isDir(name)) + { + if (n[0] != '.' && (partial is null || n.startsWith(partial))) + { + response.completions ~= n; + response.completionKinds ~= + exists(buildPath(name, "package.d")) || exists(buildPath(name, "package.di")) + ? CompletionKind.moduleName : CompletionKind.packageName; + } } } } From 6ecc8ffd7caffb11a501b9d0b1da84f55da4f3f9 Mon Sep 17 00:00:00 2001 From: WebFreak001 Date: Sun, 5 Jun 2016 02:33:07 +0200 Subject: [PATCH 2/4] Added test case --- tests/tc033/bar.d | 3 +++ tests/tc033/expected1.txt | 2 ++ tests/tc033/expected2.txt | 2 ++ tests/tc033/file.d | 3 +++ tests/tc033/run.sh | 10 ++++++++++ 5 files changed, 20 insertions(+) create mode 100644 tests/tc033/bar.d create mode 100644 tests/tc033/expected1.txt create mode 100644 tests/tc033/expected2.txt create mode 100644 tests/tc033/file.d create mode 100755 tests/tc033/run.sh diff --git a/tests/tc033/bar.d b/tests/tc033/bar.d new file mode 100644 index 0000000..4ec195e --- /dev/null +++ b/tests/tc033/bar.d @@ -0,0 +1,3 @@ +module tc033.bar; + +void fooBarFunc() {} \ No newline at end of file diff --git a/tests/tc033/expected1.txt b/tests/tc033/expected1.txt new file mode 100644 index 0000000..a48220d --- /dev/null +++ b/tests/tc033/expected1.txt @@ -0,0 +1,2 @@ +identifiers +bar M diff --git a/tests/tc033/expected2.txt b/tests/tc033/expected2.txt new file mode 100644 index 0000000..fe208d3 --- /dev/null +++ b/tests/tc033/expected2.txt @@ -0,0 +1,2 @@ +identifiers +fooBarFunc f diff --git a/tests/tc033/file.d b/tests/tc033/file.d new file mode 100644 index 0000000..6f11233 --- /dev/null +++ b/tests/tc033/file.d @@ -0,0 +1,3 @@ +import tc033.bar; + +void main() { fooBarF } \ No newline at end of file diff --git a/tests/tc033/run.sh b/tests/tc033/run.sh new file mode 100755 index 0000000..83844db --- /dev/null +++ b/tests/tc033/run.sh @@ -0,0 +1,10 @@ +set -e +set -u + +../../bin/dcd-client $1 -I bar.d + +../../bin/dcd-client $1 file.d -c 15 | sed s\""$(dirname "$(pwd)")"\"\" > actual1.txt +diff actual1.txt expected1.txt + +../../bin/dcd-client $1 file.d -c 40 | sed s\""$(dirname "$(pwd)")"\"\" > actual2.txt +diff actual2.txt expected2.txt From 65ce171d2c2fa014df7f1ae104a899eff27bd80e Mon Sep 17 00:00:00 2001 From: WebFreak001 Date: Sun, 5 Jun 2016 12:31:08 +0200 Subject: [PATCH 3/4] Renamed test case to tc036 --- tests/{tc033 => tc036}/bar.d | 0 tests/{tc033 => tc036}/expected1.txt | 0 tests/{tc033 => tc036}/expected2.txt | 0 tests/{tc033 => tc036}/file.d | 0 tests/{tc033 => tc036}/run.sh | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename tests/{tc033 => tc036}/bar.d (100%) rename tests/{tc033 => tc036}/expected1.txt (100%) rename tests/{tc033 => tc036}/expected2.txt (100%) rename tests/{tc033 => tc036}/file.d (100%) rename tests/{tc033 => tc036}/run.sh (100%) diff --git a/tests/tc033/bar.d b/tests/tc036/bar.d similarity index 100% rename from tests/tc033/bar.d rename to tests/tc036/bar.d diff --git a/tests/tc033/expected1.txt b/tests/tc036/expected1.txt similarity index 100% rename from tests/tc033/expected1.txt rename to tests/tc036/expected1.txt diff --git a/tests/tc033/expected2.txt b/tests/tc036/expected2.txt similarity index 100% rename from tests/tc033/expected2.txt rename to tests/tc036/expected2.txt diff --git a/tests/tc033/file.d b/tests/tc036/file.d similarity index 100% rename from tests/tc033/file.d rename to tests/tc036/file.d diff --git a/tests/tc033/run.sh b/tests/tc036/run.sh similarity index 100% rename from tests/tc033/run.sh rename to tests/tc036/run.sh From 27009fca68f1326b5737afdbf29fc06c8bd4c275 Mon Sep 17 00:00:00 2001 From: WebFreak001 Date: Thu, 9 Jun 2016 18:01:34 +0200 Subject: [PATCH 4/4] Fixed module names in tc036 --- tests/tc036/bar.d | 4 ++-- tests/tc036/file.d | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/tc036/bar.d b/tests/tc036/bar.d index 4ec195e..7db5596 100644 --- a/tests/tc036/bar.d +++ b/tests/tc036/bar.d @@ -1,3 +1,3 @@ -module tc033.bar; +module tc036.bar; -void fooBarFunc() {} \ No newline at end of file +void fooBarFunc() { } diff --git a/tests/tc036/file.d b/tests/tc036/file.d index 6f11233..375042c 100644 --- a/tests/tc036/file.d +++ b/tests/tc036/file.d @@ -1,3 +1,3 @@ -import tc033.bar; +import tc036.bar; -void main() { fooBarF } \ No newline at end of file +void main() { fooBarF }