@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet set) { GoReferenceExpressionBase expression = PsiTreeUtil.getParentOfType(parameters.getPosition(), GoReferenceExpressionBase.class); PsiFile originalFile = parameters.getOriginalFile(); if (expression != null) { fillVariantsByReference(expression.getReference(), originalFile, set.withPrefixMatcher(createPrefixMatcher(set.getPrefixMatcher()))); } PsiElement parent = parameters.getPosition().getParent(); if (parent != null) { fillVariantsByReference(parent.getReference(), originalFile, set.withPrefixMatcher(createPrefixMatcher(set.getPrefixMatcher()))); } }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { GoImportString importString = PsiTreeUtil.getParentOfType(parameters.getPosition(), GoImportString.class); if (importString == null) return; String path = importString.getPath(); if (path.startsWith("./") || path.startsWith("../")) return; TextRange pathRange = importString.getPathTextRange().shiftRight(importString.getTextRange().getStartOffset()); String newPrefix = parameters.getEditor().getDocument().getText(TextRange.create(pathRange.getStartOffset(), parameters.getOffset())); result = result.withPrefixMatcher(result.getPrefixMatcher().cloneWithPrefix(newPrefix)); Module module = ModuleUtilCore.findModuleForPsiElement(parameters.getOriginalFile()); if (module != null) { addCompletions(result, module, parameters.getOriginalFile(), GoUtil.goPathResolveScope(module, parameters.getOriginalFile()), false); } }
PsiDirectory containingDirectory = file.getContainingDirectory(); if (file instanceof GoFile && containingDirectory != null) { CompletionResultSet resultSet = result.withPrefixMatcher(new CamelHumpMatcher(result.getPrefixMatcher().getPrefix(), false));
PrefixMatcher matcher = result.getPrefixMatcher(); if (parameters.getInvocationCount() < 2 && matcher.getPrefix().isEmpty()) { result.restartCompletionOnPrefixChange(StandardPatterns.string().longerThan(0));
public static void addPrioritizedServiceLookupElements(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet resultSet, @NotNull PrioritizedLookupResult result) { // move known elements to top if(result.getTopStrings().size() > 0) { CompletionSorter completionSorter = CompletionService.getCompletionService() .defaultSorter(parameters, resultSet.getPrefixMatcher()) .weighBefore("priority", new MyLookupElementWeigher(result.getTopStrings())); resultSet = resultSet.withRelevanceSorter(completionSorter); } resultSet.addAllElements(result.getLookupElements()); }
@Override public void getLookupElements(@NotNull GotoCompletionProviderLookupArguments arguments) { final CompletionResultSet resultSet = arguments.getResultSet(); String blockNamePrefix = resultSet.getPrefixMatcher().getPrefix(); // find caret position: // - "has_role('" // - "has_role('YAML_ROLE_" if(!blockNamePrefix.matches("^.*(has_role|is_granted)\\s*\\(\\s*'[\\w-]*$")) { return; } // clear prefix caret string; for a clean completion independent from inside content CompletionResultSet myResultSet = resultSet.withPrefixMatcher(""); VoterUtil.LookupElementPairConsumer consumer = new VoterUtil.LookupElementPairConsumer(); VoterUtil.visitAttribute(getProject(), consumer); myResultSet.addAllElements(consumer.getLookupElements()); }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) { PsiElement position = parameters.getOriginalPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { return; } // wtf: need to prefix the block tag itself. remove this behavior and strip for new Matcher // Find first Identifier "b" char or fallback to empty: // "{% block b", "{% block" String blockNamePrefix = resultSet.getPrefixMatcher().getPrefix(); int spacePos = blockNamePrefix.lastIndexOf(' '); blockNamePrefix = spacePos > 0 ? blockNamePrefix.substring(spacePos + 1) : ""; CompletionResultSet myResultSet = resultSet.withPrefixMatcher(blockNamePrefix); // collect blocks in all related files Pair<Collection<PsiFile>, Boolean> scopedContext = TwigUtil.findScopedFile(position); myResultSet.addAllElements(TwigUtil.getBlockLookupElements( position.getProject(), TwigFileUtil.collectParentFiles(scopedContext.getSecond(), scopedContext.getFirst()) )); } }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) { if(!Symfony2ProjectComponent.isEnabled(parameters.getPosition())) { return; } PhpIndex phpIndex = PhpIndex.getInstance(parameters.getOriginalFile().getProject()); Map<String, String> entityNamespaces = ServiceXmlParserFactory.getInstance(parameters.getOriginalFile().getProject(), EntityNamesServiceParser.class).getEntityNameMap(); // copied from PhpCompletionUtil::addClassesInNamespace looks the official way to find classes in namespaces // its a really performance nightmare Collection<String> names = phpIndex.getAllClassNames(new CamelHumpMatcher(resultSet.getPrefixMatcher().getPrefix())); for (String name : names) { Collection<PhpClass> classes = phpIndex.getClassesByName(name); for(Map.Entry<String, String> entry: entityNamespaces.entrySet()) { String namespaceFqn = PhpLangUtil.toFQN(entry.getValue()); Collection<PhpClass> filtered = PhpCompletionUtil.filterByNamespace(classes, namespaceFqn); for (PhpClass phpClass : filtered) { resultSet.addElement(new PhpClassLookupElement(phpClass, true, PhpClassReferenceInsertHandler.getInstance())); } } } } }
protected int computeResultCount(List<String> completions, CompletionResultSet result) { PrefixMatcher prefixMatcher = result.getPrefixMatcher(); int resultCount = 0; for (String c : completions) { if (prefixMatcher.prefixMatches(c)) { resultCount++; } } return resultCount; } }
public static void addClassCompletion(CompletionParameters parameters, final CompletionResultSet resultSet, PsiElement psiElement, boolean withInterface, boolean withLeadBackslash) { // Foo\|Bar // Foo|\Bar PhpElementsUtil.visitNamespaceClassForCompletion(psiElement, parameters.getOffset(), (phpClass, presentableFQN, prefix) -> resultSet.addElement(LookupElementBuilder.create(prefix + presentableFQN).withIcon(phpClass.getIcon())) ); PhpIndex phpIndex = PhpIndex.getInstance(psiElement.getProject()); for (String className : phpIndex.getAllClassNames(resultSet.getPrefixMatcher())) { for(PhpClass phpClass: phpIndex.getClassesByName(className)) { resultSet.addElement( wrapInsertHandler(new MyPhpLookupElement(phpClass), withLeadBackslash) ); } if(withInterface) { for(PhpClass phpClass: phpIndex.getInterfacesByName(className)) { resultSet.addElement( wrapInsertHandler(new MyPhpLookupElement(phpClass), withLeadBackslash) ); } } } }
@NotNull protected Collection<String> getClasses(@NotNull PhpToolboxCompletionContributorParameter parameter) { return PhpIndex.getInstance(parameter.getProject()).getAllClassNames(parameter.getCompletionResultSet().getPrefixMatcher()); }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { PsiElement position = parameters.getPosition(); if ( !( position.getParent() instanceof PsiLiteralExpression ) ) { //We should only return if we are in a literal expression, i.e. inside the quotes return; } for ( String type : COMPONENT_MODEL_TYPES ) { if ( result.getPrefixMatcher().isStartMatch( type ) ) { result.addElement( LookupElementBuilder.create( type ) ); } } }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { PsiElement position = parameters.getPosition(); JFlexComposite parent = PsiTreeUtil.getParentOfType( position, JFlexDeclarationsSection.class, JFlexRule.class, JFlexJavaCode.class, JFlexJavaType.class); boolean inJava = parent instanceof JFlexJavaCode || parent instanceof JFlexJavaType; if (!inJava && parameters.getInvocationCount() < 2) { int start = position.getTextRange().getStartOffset(); CompletionResultSet result2 = start > 0 && parameters.getEditor().getDocument().getText().charAt(start - 1) == '%' ? result.withPrefixMatcher(result.getPrefixMatcher().cloneWithPrefix("%" + result.getPrefixMatcher().getPrefix())) : result; for (String keyword : suggestKeywords(parameters.getPosition())) { result2.addElement(createKeywordLookupItem(keyword)); } } } });
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet resultSet) { PhpIndex phpIndex = PhpIndex.getInstance(completionParameters.getPosition().getProject()); for (String className : phpIndex.getAllClassNames(resultSet.getPrefixMatcher())) { for(PhpClass phpClass: phpIndex.getClassesByName(className)) { resultSet.addElement(new MyPhpLookupElement(phpClass)); } for(PhpClass phpClass: phpIndex.getInterfacesByName(className)) { resultSet.addElement(new MyPhpLookupElement(phpClass)); } } } });
public static void fillWithAllPackageNamesWithAutocompletion(@NotNull PsiElement element, @NotNull final CompletionResultSet result) { final Project project = element.getProject(); final String prefix = result.getPrefixMatcher().getPrefix(); GlobalSearchScope resolveScope = element.getResolveScope(); PerlBuiltInNamespacesService.getInstance(project).processNamespaces(namespace -> { addExpandablePackageElement(project, result, namespace.getPackageName(), prefix, namespace.getIcon(0)); return true; }); for (String packageName : PerlPackageUtil.getDefinedPackageNames(project)) { PerlPackageUtil.processNamespaces(packageName, project, resolveScope, namespace -> { String name = namespace.getPackageName(); if (StringUtil.isNotEmpty(name)) { char firstChar = name.charAt(0); if (firstChar == '_' || Character.isLetterOrDigit(firstChar)) { addExpandablePackageElement(project, result, packageName, prefix, namespace.getIcon(0)); } } return true; }); } }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet result) { PsiElement method = parameters.getPosition().getParent(); if (!(method instanceof PsiPerlMethod)) { LOG.warn("Expected PsiPerlMethod, got psiElement=[" + method.getClass() + "]; text=[" + method.getText() + "]"); return; } String explicitNamespace = ((PsiPerlMethod)method).getExplicitPackageName(); String currentPrefixMatcher = result.getPrefixMatcher().getPrefix(); String newPrefixMathcer = (explicitNamespace == null ? currentPrefixMatcher : (explicitNamespace + PerlPackageUtil.PACKAGE_SEPARATOR) + currentPrefixMatcher); result = result.withPrefixMatcher(new PlainPrefixMatcher(newPrefixMathcer)); if (!((PsiPerlMethod)method).isObjectMethod()) { PerlPackageCompletionUtil.fillWithAllPackageNamesWithAutocompletion(parameters.getPosition(), result); } else { if (!StringUtil.equals(PerlPackageUtil.SUPER_PACKAGE_FULL, newPrefixMathcer)) { LookupElementBuilder newElement = PerlPackageCompletionUtil.getPackageLookupElementWithAutocomplete(method.getProject(), PerlPackageUtil.SUPER_PACKAGE_FULL, null); newElement.putUserData(PerlCompletionWeighter.WEIGHT, -1); result.addElement(newElement); } } } }