diff --git a/src/main/java/com/cleanroommc/groovyscript/server/Completions.java b/src/main/java/com/cleanroommc/groovyscript/server/Completions.java index 96abaa6bc..0b8068bb2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/server/Completions.java +++ b/src/main/java/com/cleanroommc/groovyscript/server/Completions.java @@ -10,14 +10,17 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.function.Function; public class Completions extends ArrayList { private final int limit; + private String filter; public Completions(int limit) { this.limit = limit; + this.filter = null; } public int getLimit() { @@ -28,6 +31,18 @@ public boolean reachedLimit() { return size() >= this.limit; } + public void setFilter(String filter) { + this.filter = filter.toLowerCase(Locale.ENGLISH); + } + + @Override + public boolean add(CompletionItem item) { + if (filter == null || item.getLabel().toLowerCase(Locale.ENGLISH).contains(filter)) { + return super.add(item); + } + return false; + } + public void addAll(Iterable values, Function toCompletionItem) { for (V v : values) { if (reachedLimit()) break; diff --git a/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java b/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java index 86e3af874..abdcc3ac8 100644 --- a/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java +++ b/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java @@ -197,6 +197,7 @@ private boolean populateItemsFromConstantExpression(ConstantExpression node, AST break; } } + items.setFilter(node.getText()); mapper.provideCompletion(index, params, items); } }