prefixHumps weigher doesn't require item's prefix matcher

This commit is contained in:
peter
2011-04-18 14:52:41 +02:00
parent eb6bc1be28
commit 757436021d
4 changed files with 18 additions and 18 deletions
@@ -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);
}
}
@@ -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()) {