@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { final Symbol callingSymbol = (Symbol) parameters.getPosition().getParent(); if (!parameters.isExtendedCompletion()) { String prefix = findCurrentText(parameters, parameters.getPosition()); if (prefix.isEmpty() || Character.isDigit(prefix.charAt(0))) { return; } final PsiFile containingFile = parameters.getOriginalFile(); List<Symbol> variants = Lists.newArrayList(); final LocalDefinitionCompletionProvider processor = new LocalDefinitionCompletionProvider(callingSymbol); PsiTreeUtil.treeWalkUp(processor, callingSymbol, containingFile, ResolveState.initial()); variants.addAll(processor.getSymbols()); for (Symbol currentSymbol : variants) { if (LocalizationConstruct.isLocalScoping(currentSymbol.getLocalizationConstruct())) { final String tailText = currentSymbol.getLocalizationConstruct().toString(); result.addElement(PrioritizedLookupElement.withPriority( LookupElementBuilder.create(currentSymbol.getSymbolName()) .withItemTextForeground(JBColor.GREEN) .withTypeText(tailText, true), LOCAL_VARIABLE_PRIORITY)); } } } }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { final PsiFile containingFile = parameters.getOriginalFile(); String prefix = findCurrentText(parameters, parameters.getPosition()); if (!parameters.isExtendedCompletion() && !prefix.isEmpty() && containingFile instanceof MathematicaPsiFile) { final CamelHumpMatcher matcher = new CamelHumpMatcher(prefix, true); CompletionResultSet result2 = result.withPrefixMatcher(matcher); final HashSet<SymbolResolveResult> cachedDefinitions = ((MathematicaPsiFile) containingFile).getCachedDefinitions(); for (SymbolResolveResult cachedDefinition : cachedDefinitions) { if (cachedDefinition.isValidResult() && cachedDefinition.getElement() != null) { result2.addElement( PrioritizedLookupElement .withPriority( LookupElementBuilder .create(cachedDefinition.getElement()) .bold() .withTypeText("(" + containingFile.getName() + ")", true), GLOBAL_VARIABLE_PRIORITY)); } } } }