mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
prefixHumps weigher doesn't require item's prefix matcher
This commit is contained in:
@@ -73,7 +73,7 @@ public class JavaCompletionSorting {
|
||||
}
|
||||
afterProximity.add(new PreferShorter(expectedTypes, prefix));
|
||||
|
||||
CompletionSorter sorter = CompletionSorter.defaultSorter(parameters);
|
||||
CompletionSorter sorter = CompletionSorter.defaultSorter(parameters, result.getPrefixMatcher());
|
||||
if (!smart && afterNew) {
|
||||
sorter = sorter.weighBefore("liftShorter", new PreferExpected(true, expectedTypes));
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ public abstract class CompletionService {
|
||||
return lookupSet.toArray(new LookupElement[lookupSet.size()]);
|
||||
}
|
||||
|
||||
public abstract CompletionSorter defaultSorter(CompletionParameters parameters);
|
||||
public abstract CompletionSorter defaultSorter(CompletionParameters parameters, PrefixMatcher matcher);
|
||||
|
||||
public abstract CompletionSorter emptySorter();
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@ public abstract class CompletionSorter {
|
||||
return CompletionService.getCompletionService().emptySorter();
|
||||
}
|
||||
|
||||
public static CompletionSorter defaultSorter(CompletionParameters parameters) {
|
||||
return CompletionService.getCompletionService().defaultSorter(parameters);
|
||||
public static CompletionSorter defaultSorter(CompletionParameters parameters, PrefixMatcher matcher) {
|
||||
return CompletionService.getCompletionService().defaultSorter(parameters, matcher);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+14
-14
@@ -87,7 +87,7 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
CompletionProgressIndicator process = myCurrentCompletion;
|
||||
LOG.assertTrue(process != null, "createResultSet may be invoked only during completion");
|
||||
CamelHumpMatcher matcher = new CamelHumpMatcher(prefix, true, parameters.relaxMatching());
|
||||
CompletionSorterImpl sorter = defaultSorter(parameters);
|
||||
CompletionSorterImpl sorter = defaultSorter(parameters, matcher);
|
||||
return new CompletionResultSetImpl(consumer, textBeforePosition, matcher, contributor,parameters, sorter, process, null);
|
||||
}
|
||||
|
||||
@@ -243,28 +243,28 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
return phase;
|
||||
}
|
||||
|
||||
public CompletionSorterImpl defaultSorter(CompletionParameters parameters) {
|
||||
public CompletionSorterImpl defaultSorter(CompletionParameters parameters, final PrefixMatcher matcher) {
|
||||
final CompletionLocation location = new CompletionLocation(parameters);
|
||||
|
||||
CompletionSorterImpl sorter = emptySorter().weigh(new LookupElementWeigher("prefixHumps") {
|
||||
@NotNull
|
||||
@Override
|
||||
public Boolean weigh(@NotNull LookupElement element) {
|
||||
final String prefix = element.getPrefixMatcher().getPrefix();
|
||||
if (!prefix.isEmpty()) {
|
||||
final String prefixHumps = StringUtil.capitalsOnly(prefix);
|
||||
if (prefixHumps.length() > 0) {
|
||||
CompletionSorterImpl sorter = emptySorter();
|
||||
final String prefix = matcher.getPrefix();
|
||||
if (!prefix.isEmpty()) {
|
||||
final String prefixHumps = StringUtil.capitalsOnly(prefix);
|
||||
if (prefixHumps.length() > 0) {
|
||||
sorter = sorter.weigh(new LookupElementWeigher("prefixHumps") {
|
||||
@NotNull
|
||||
@Override
|
||||
public Comparable weigh(@NotNull LookupElement element) {
|
||||
for (String itemString : element.getAllLookupStrings()) {
|
||||
if (StringUtil.capitalsOnly(itemString).startsWith(prefixHumps)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
for (final Weigher weigher : WeighingService.getWeighers(CompletionService.RELEVANCE_KEY)) {
|
||||
sorter = sorter.weigh(new LookupElementWeigher(weigher.toString()) {
|
||||
|
||||
Reference in New Issue
Block a user