| package com.intellij.codeInsight.completion.impl; |
| |
| import com.intellij.codeInsight.completion.PrefixMatcher; |
| import com.intellij.codeInsight.lookup.LookupElement; |
| import com.intellij.codeInsight.lookup.LookupElementWeigher; |
| import com.intellij.codeInsight.lookup.WeighingContext; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * @author Peter |
| */ |
| public class RealPrefixMatchingWeigher extends LookupElementWeigher { |
| |
| public RealPrefixMatchingWeigher() { |
| super("prefix", false, true); |
| } |
| |
| @Override |
| public Comparable weigh(@NotNull LookupElement element, @NotNull WeighingContext context) { |
| return getBestMatchingDegree(element, CompletionServiceImpl.getItemMatcher(element, context)); |
| } |
| |
| public static int getBestMatchingDegree(LookupElement element, PrefixMatcher matcher) { |
| int max = Integer.MIN_VALUE; |
| for (String lookupString : element.getAllLookupStrings()) { |
| max = Math.max(max, matcher.matchingDegree(lookupString)); |
| } |
| return -max; |
| } |
| } |