private CompletionResultSet adjustMatcher(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet result, @NotNull PsiElement parent) { int startOffset = parent.getTextRange().getStartOffset(); String newPrefix = parameters.getEditor().getDocument().getText(TextRange.create(startOffset, parameters.getOffset())); return result.withPrefixMatcher(createPrefixMatcher(newPrefix)); } });
@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));
public static CompletionResultSet forValue( final @NotNull CompletionParameters parameters, final @NotNull CompletionResultSet result) { final boolean caseSensitive = false; return getPrefix(parameters.getOffset() - 1, parameters.getOriginalFile().getText()) .map(prefix -> result.withPrefixMatcher(new CamelHumpMatcher(prefix, caseSensitive))) .orElse(result); }
@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()) )); } }
@Override protected void addBashCompletions(String currentText, CompletionParameters parameters, ProcessingContext context, CompletionResultSet result) { //if we are in a combined word, get it PsiElement parentElement = parameters.getPosition().getParent(); if (parentElement instanceof BashWord) { currentText = findCurrentText(parameters, parentElement); } result = result.withPrefixMatcher(currentText); String usedPrefix = findUsedPrefix(currentText); if (usedPrefix == null) { return; } //fixme shouldn't be needed String baseDir = findBaseDir(parameters, usedPrefix); if (baseDir == null) { return; } String relativePath = currentText.substring(usedPrefix.length()); if (relativePath.startsWith("/")) { relativePath = relativePath.substring(1); } List<String> completions = CompletionUtil.completeRelativePath(baseDir, usedPrefix, relativePath); result.addAllElements(CompletionProviderUtils.createPathItems(completions)); }
protected void addBashCompletions(String currentText, CompletionParameters parameters, ProcessingContext context, CompletionResultSet resultWithoutPrefix) { if (currentText == null || !currentText.startsWith("/")) { return; } PsiElement parentElement = parameters.getPosition().getParent(); String parentText = parentElement.getText(); if (parentText.startsWith("$HOME") || parentText.startsWith("~")) { return; } int invocationCount = parameters.getInvocationCount(); CompletionResultSet result = resultWithoutPrefix.withPrefixMatcher(new PathPrefixMatcher(currentText)); Predicate<File> incovationCountPredicate = file -> { //accept hidden file with more than one invocation //return file.isHidden() ? invocationCount >= 2 : true; boolean isHidden = file.isHidden() || file.getName().startsWith("."); return (isHidden && (invocationCount >= 2)) || ((invocationCount >= 1) && !isHidden); }; List<String> completions = CompletionUtil.completeAbsolutePath(currentText, createFileFilter().and(incovationCountPredicate)); result.addAllElements(CompletionProviderUtils.createPathItems(completions)); int validResultCount = computeResultCount(completions, result); if (validResultCount == 0 && invocationCount == 1) { //do hidden-completion now List<String> secondCompletions = CompletionUtil.completeAbsolutePath(currentText, createFileFilter()); result.addAllElements(CompletionProviderUtils.createPathItems(secondCompletions)); } if (invocationCount == 1) { result.addLookupAdvertisement("Press twice for hidden files"); } }
@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)); } } } });
.replace(CompletionInitializationContext.DUMMY_IDENTIFIER, "") .replace(CompletionInitializationContext.DUMMY_IDENTIFIER_TRIMMED, ""); result = result.withPrefixMatcher(new PlainPrefixMatcher(fullPrefix));
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { if (parameters.getInvocationCount() > 0) { if (isEmptyComment(parameters)) { int priority = 100; for (String section : COMMENT_SECTIONS) { priority--; final LookupElementBuilder elm = LookupElementBuilder.create(" ::" + section + ":: ") .withPresentableText("::" + section + "::"); result.withPrefixMatcher(new PlainPrefixMatcher("")) .addElement(PrioritizedLookupElement.withPriority(elm, priority)); } for (String tag : COMMENT_TAGS) { result.withPrefixMatcher(new PlainPrefixMatcher("")) .addElement(LookupElementBuilder.create(" :" + tag + ": ")); } } else { final PsiFile file = parameters.getOriginalFile(); final MathematicaGlobalResolveCache symbolCache = MathematicaGlobalResolveCache.getInstance(file.getProject()); final List<String> cachedDefinitions = symbolCache.getCachedFileSymbolNames(file); for (String definition : cachedDefinitions) { result.addElement(LookupElementBuilder.create(definition)); } } } }
@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); } } } }
public void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet resultSet) { PsiElement variableNameElement = parameters.getPosition(); boolean isDeclaration = VARIABLE_NAME_IN_DECLARATION_PATTERN.accepts(variableNameElement); boolean isFullQualified = PerlPackageUtil.isFullQualifiedName(variableNameElement.getText()); PsiElement originalPosition = parameters.getOriginalPosition(); if (originalPosition instanceof PerlVariableNameElement) { resultSet = resultSet.withPrefixMatcher(new PlainPrefixMatcher(originalPosition.getText())); } // declaration helper if (isDeclaration) { PerlVariableCompletionUtil.fillWithUnresolvedVars((PerlVariableNameElement)variableNameElement, resultSet); } else if (!isFullQualified) { PerlVariableCompletionUtil.fillWithLExicalVariables(variableNameElement, resultSet); } // built ins if (VARIABLE_NAME_IN_LOCAL_DECLARATION_PATTERN.accepts(variableNameElement)) { PerlVariableCompletionUtil.fillWithBuiltInVariables(variableNameElement, resultSet); } // imports if (!isDeclaration && !isFullQualified) { fillWithImportedVariables(variableNameElement, resultSet); } // fqn names if (!isDeclaration) { fillWithFullQualifiedVariables(variableNameElement, resultSet); } }
@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)); } } } }
.replace(CompletionInitializationContext.DUMMY_IDENTIFIER_TRIMMED, ""); final CompletionResultSet finalResultSet = result.withPrefixMatcher(fullPrefix);
CompletionResultSet prefixedCommand = result.withPrefixMatcher(lookupPrefix);