From 64c153f5e9fe29d52f06c2fbc38921c7aec07520 Mon Sep 17 00:00:00 2001 From: SuspiciousActivity <38253929+SuspiciousActivity@users.noreply.github.com> Date: Sun, 8 Jul 2018 20:35:54 +0200 Subject: [PATCH] Added a contains check to autocomplete --- .../fife/ui/autocomplete/AbstractCompletionProvider.java | 9 +++++++++ src/org/fife/ui/autocomplete/AutoCompletion.java | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java b/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java index 4940577..eb51750 100644 --- a/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java +++ b/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java @@ -154,9 +154,11 @@ public abstract class AbstractCompletionProvider extends CompletionProviderBase String text = getAlreadyEnteredText(comp); if (text != null) { int index = Collections.binarySearch(completions, text, comparator); + boolean exactMatch = false; if (index < 0) { // No exact match index = -index - 1; } else { + exactMatch = true; // If there are several overloads for the function being // completed, Collections.binarySearch() will return the index // of one of those overloads, but we must return all of them, @@ -176,6 +178,13 @@ public abstract class AbstractCompletionProvider extends CompletionProviderBase break; } } + if (!exactMatch) { + for (Completion c : completions) { + if (c.getInputText().contains(text) && !retVal.contains(c)) { + retVal.add(c); + } + } + } } return retVal; } diff --git a/src/org/fife/ui/autocomplete/AutoCompletion.java b/src/org/fife/ui/autocomplete/AutoCompletion.java index 4fa9545..48954f1 100644 --- a/src/org/fife/ui/autocomplete/AutoCompletion.java +++ b/src/org/fife/ui/autocomplete/AutoCompletion.java @@ -748,7 +748,8 @@ public class AutoCompletion { } final List completions = provider.getCompletions(textComponent); int count = completions == null ? 0 : completions.size(); - if (count > 1 || (count == 1 && (isPopupVisible() || textLen == 0)) || (count == 1 && !getAutoCompleteSingleChoices())) { + if (count > 1 || (count == 1 && (isPopupVisible() || text.equals(completions.get(0).getInputText()))) + || (count == 1 && (isPopupVisible() || textLen == 0)) || (count == 1 && !getAutoCompleteSingleChoices())) { if (popupWindow == null) { popupWindow = new AutoCompletePopupWindow(parentWindow, this); popupWindowListener.install(popupWindow);