Skip to content

Commit a34b8a0

Browse files
committed
When autocompleting "import <text>" enable matching anywhere on the class name,
not just the beginning.
1 parent e5ae00c commit a34b8a0

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/main/java/org/scijava/ui/swing/script/autocompletion/AutocompletionProvider.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package org.scijava.ui.swing.script;
1+
package org.scijava.ui.swing.script.autocompletion;
22

33
import java.lang.reflect.Field;
44
import java.lang.reflect.Method;
55
import java.lang.reflect.Modifier;
66
import java.util.ArrayList;
77
import java.util.Collections;
88
import java.util.List;
9+
import java.util.function.Function;
910
import java.util.regex.Matcher;
1011
import java.util.regex.Pattern;
1112
import java.util.stream.Collectors;
@@ -17,6 +18,7 @@
1718
import org.fife.ui.autocomplete.Completion;
1819
import org.fife.ui.autocomplete.DefaultCompletionProvider;
1920
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
21+
import org.scijava.ui.swing.script.ClassUtil;
2022

2123
public class AutocompletionProvider extends DefaultCompletionProvider {
2224

@@ -67,10 +69,18 @@ public List<Completion> getCompletionsImpl(final JTextComponent comp) {
6769

6870
final String text = this.getAlreadyEnteredText(comp);
6971

70-
// E.g. "from ij" to expand to a package name like ij or ij.gui or ij.plugin
72+
// E.g. "from ij" to expand to a package name and class like ij or ij.gui or ij.plugin
7173
final Matcher m1 = fromImport.matcher(text);
7274
if (m1.find())
73-
return asCompletionList(ClassUtil.findPackageNamesStartingWith(m1.group(2)), m1.group(1));
75+
return asCompletionList(ClassUtil.findClassNamesContaining(m1.group(2))
76+
.map(new Function<String, String>() {
77+
@Override
78+
public final String apply(final String s) {
79+
final int idot = s.lastIndexOf('.');
80+
return s.substring(0, Math.max(0, idot)) + " import " + s.substring(idot +1);
81+
}
82+
}),
83+
m1.group(1));
7484

7585
final Matcher m1f = fastImport.matcher(text);
7686
if (m1f.find())

0 commit comments

Comments
 (0)