下面列出了怎么用 com.intellij.codeInsight.completion.CompletionSorter 的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context,
@NotNull CompletionResultSet resultSet, @NotNull String[] query) {
PsiElement element = parameters.getPosition();
Module module = ModuleUtilCore.findModuleForPsiElement(element);
if (module == null) {
return;
}
List<LookupElement> results = findResults(element, getQueryAtPosition(query));
if (!results.isEmpty()) {
resultSet
.withRelevanceSorter(CompletionSorter.emptySorter())
.addAllElements(results);
resultSet.stopHere();
}
}
@RequiredReadAction
public static CompletionResultSet modifyResultSet(CompletionParameters completionParameters, CompletionResultSet result)
{
CompletionSorter sorter = CompletionSorter.defaultSorter(completionParameters, result.getPrefixMatcher());
List<LookupElementWeigher> afterStats = new ArrayList<>();
afterStats.add(new KindSorter());
ContainerUtil.addIfNotNull(afterStats, recursiveSorter(completionParameters, result));
List<LookupElementWeigher> afterProximity = new ArrayList<>();
List<ExpectedTypeInfo> expectedTypeRefs = ExpectedTypeVisitor.findExpectedTypeRefs(completionParameters.getPosition());
if(expectedTypeRefs.isEmpty())
{
expectedTypeRefs = ExpectedTypeVisitor.findExpectedTypeRefs(completionParameters.getPosition().getParent());
}
if(!expectedTypeRefs.isEmpty())
{
afterProximity.add(new ExpectedNameSorter(expectedTypeRefs));
afterProximity.add(new PreferShorter(expectedTypeRefs));
}
afterProximity.add(new NotImportedSorter());
sorter = sorter.weighAfter("stats", afterStats.toArray(new LookupElementWeigher[afterStats.size()]));
sorter = sorter.weighAfter("proximity", afterProximity.toArray(new LookupElementWeigher[afterProximity.size()]));
result = result.withRelevanceSorter(sorter);
return result;
}
private static CompletionResult createCompletionResultFor(PsiClass cls) {
TestLookupElement lookupElement = new TestLookupElement(cls);
PrefixMatcher matcher = Mockito.mock(PrefixMatcher.class);
Mockito.when(matcher.prefixMatches(any(LookupElement.class))).thenReturn(true);
return CompletionResult.wrap(lookupElement, matcher, Mockito.mock(CompletionSorter.class));
}
@Override
public CompletionResultSet withRelevanceSorter(CompletionSorter sorter) {
return null;
}