@NotNull public static CamelHumpMatcher createPrefixMatcher(@NotNull PrefixMatcher original) { return createPrefixMatcher(original.getPrefix()); }
@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); } }
@Nullable IdFilter idFilter, @NotNull GoFile file) { String prefix = matcher.getPrefix(); boolean emptyPrefix = prefix.isEmpty(); for (String name : sorted) { ProgressManager.checkCanceled(); if (matcher.isStartMatch(name)) { result.add(name);
@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 boolean accept(String s) { return emptyPrefix || matcher.prefixMatches(s) || packagesWithAliases.contains(substringBefore(s, '.')); } }, scope, idFilter);
@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 ) ); } } }
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; } }
PsiDirectory containingDirectory = file.getContainingDirectory(); if (file instanceof GoFile && containingDirectory != null) { CompletionResultSet resultSet = result.withPrefixMatcher(new CamelHumpMatcher(result.getPrefixMatcher().getPrefix(), false));
@Override public CompletionResultSet withPrefixMatcher(final String prefix) { if (!prefix.isEmpty()) { // don't erase our prefix! // also, use `cloneWithPrefix` so our settings are preserved return withPrefixMatcher(getPrefixMatcher().cloneWithPrefix(prefix)); } return this; }
if (parameters.getInvocationCount() < 2 && matcher.getPrefix().isEmpty()) { result.restartCompletionOnPrefixChange(StandardPatterns.string().longerThan(0)); return;
@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())); } } } } }
public void runRemainingContributors(CompletionParameters parameters, Consumer<CompletionResult> consumer, final boolean stop) { if (stop) { stopHere(); } CompleteCommand.getVariantsFromContributors(parameters, getPrefixMatcher().getPrefix(), myContributor, consumer); }
@Override public CompletionResultSet caseInsensitive() { return withPrefixMatcher(new CamelHumpMatcher(getPrefixMatcher().getPrefix(), false)); }
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); } } } }