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

下面列出了怎么用 com.intellij.codeInsight.completion.CompletionContributor 的API类实例代码及写法,或者点击链接到github查看源代码。


static void extend(CompletionContributor contributor)
{
	contributor.extend(CompletionType.BASIC, CSharpPatterns.expressionStart(), new CompletionProvider()
	{
		@RequiredReadAction
		@Override
		public void addCompletions(@Nonnull CompletionParameters parameters, ProcessingContext context, @Nonnull CompletionResultSet result)
		{
			PsiElement position = parameters.getPosition();
			if(!CSharpModuleUtil.findLanguageVersion(position).isAtLeast(CSharpLanguageVersion._3_0))
			{
				return;
			}
			CSharpReferenceExpressionEx parent = (CSharpReferenceExpressionEx) position.getParent();
			if(parent.getQualifier() != null || parent.kind() != CSharpReferenceExpression.ResolveToKind.ANY_MEMBER)
			{
				return;
			}

			CSharpCompletionUtil.elementToLookup(result, CSharpSoftTokens.FROM_KEYWORD, null, null);
		}
	});
}
 

@Override
void addTo(CompletionContributor contributor) {
    BashPsiPattern internal = new BashPsiPattern().withParent(BashInternalCommand.class);
    BashPsiPattern generic = new BashPsiPattern().withParent(BashGenericCommand.class);
    ElementPattern<PsiElement> internalOrGeneric = StandardPatterns.or(internal, generic);

    BashPsiPattern pattern = new BashPsiPattern().withParent(internalOrGeneric);

    contributor.extend(CompletionType.BASIC, pattern, this);
}
 
源代码3 项目: consulo   文件: TypedHandler.java

private static boolean isAutoPopup(@Nonnull Editor editor, @Nonnull PsiFile file, char charTyped) {
  final int offset = editor.getCaretModel().getOffset() - 1;
  if (offset >= 0) {
    final PsiElement element = file.findElementAt(offset);
    if (element != null) {
      for (CompletionContributor contributor : CompletionContributor.forLanguageHonorDumbness(element.getLanguage(), file.getProject())) {
        if (contributor.invokeAutoPopup(element, charTyped)) {
          LOG.debug(contributor + " requested completion autopopup when typing '" + charTyped + "'");
          return true;
        }
      }
    }
  }
  return false;
}
 
源代码4 项目: litho   文件: ReplacingConsumerTest.java

TestCompletionResultSet() {
  super(
      Mockito.mock(PrefixMatcher.class),
      Mockito.mock(Consumer.class),
      Mockito.mock(CompletionContributor.class));
}
 

void addTo(CompletionContributor contributor) {
    contributor.extend(CompletionType.BASIC, KEYWORD_PATTERN, this);
}
 

@Override
void addTo(CompletionContributor contributor) {
    contributor.extend(CompletionType.BASIC, new BashPsiPattern().inside(BashShebang.class), this);
}
 

@Override
void addTo(CompletionContributor contributor) {
    BashPsiPattern insideVar = new BashPsiPattern().withParent(BashVar.class);

    contributor.extend(CompletionType.BASIC, insideVar, this);
}
 

@Override
void addTo(CompletionContributor contributor) {
    contributor.extend(CompletionType.BASIC, new BashPsiPattern().withParent(BashWord.class), this);
}
 

static void extend(CompletionContributor contributor)
{
	contributor.extend(CompletionType.BASIC, CSharpPatterns.fieldStart(), new CompletionProvider()
	{
		@RequiredReadAction
		@Override
		public void addCompletions(@Nonnull CompletionParameters parameters, ProcessingContext context, @Nonnull CompletionResultSet result)
		{
			CSharpFieldDeclaration currentElement = PsiTreeUtil.getParentOfType(parameters.getPosition(), CSharpFieldDeclaration.class);
			assert currentElement != null;

			DotNetModifierList modifierList = currentElement.getModifierList();
			if(modifierList != null)
			{
				int textLength = modifierList.getTextLength();
				if(textLength > 0)
				{
					return;
				}
			}

			PsiElement nextSibling = UsefulPsiTreeUtil.getNextSiblingSkippingWhiteSpacesAndComments(currentElement);
			TextRange textRange = nextSibling == null ? null : new TextRange(currentElement.getTextRange().getStartOffset(), nextSibling.getTextRange().getStartOffset());
			if(textRange != null && !StringUtil.containsLineBreak(textRange.subSequence(currentElement.getContainingFile().getText())))
			{
				return;
			}

			CSharpTypeDeclaration typeDeclaration = PsiTreeUtil.getParentOfType(parameters.getPosition(), CSharpTypeDeclaration.class);

			if(typeDeclaration == null)
			{
				return;
			}

			Consumer<LookupElement> delegate = lookupElement ->
			{
				if(lookupElement != null)
				{
					CSharpCompletionSorting.force(lookupElement, CSharpCompletionSorting.KindSorter.Type.overrideMember);
					result.consume(lookupElement);
				}
			};

			for(CSharpMemberAddByCompletionContributor completionContributor : EP_NAME.getExtensions())
			{
				completionContributor.processCompletion(parameters, context, delegate, typeDeclaration);
			}
		}
	});
}