类 com.intellij.codeInsight.completion.CompletionSorter 源码实例Demo

下面列出了怎么用 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;
}
 
源代码3 项目: litho   文件: ReplacingConsumerTest.java

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));
}
 
源代码4 项目: litho   文件: ReplacingConsumerTest.java

@Override
public CompletionResultSet withRelevanceSorter(CompletionSorter sorter) {
  return null;
}