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 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); } }
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); }
private void addParameterNameCompletion(CompletionParameters completionParameters, CompletionResultSet completionResultSet, PsiElement psiElement) { PsiElement literalExpr = psiElement.getParent(); if(!(literalExpr instanceof StringLiteralExpression)) { return; } String content = PsiElementUtils.getStringBeforeCursor((StringLiteralExpression) literalExpr, completionParameters.getOffset()); if(content == null) { return; } Matcher matcher = Pattern.compile("(\\w+)\\.(\\w+)[\\s+]*[=><]+[\\s+]*$").matcher(content); if (matcher.find()) { final String complete = matcher.group(1) + "_" + matcher.group(2); // fill underscore and underscore completion Set<String> strings = new HashSet<String>() {{ add(complete); add(fr.adrienbrault.idea.symfony2plugin.util.StringUtils.camelize(complete, true)); }}; for(String string: strings) { completionResultSet.addElement(LookupElementBuilder.create(":" + string).withIcon(Symfony2Icons.DOCTRINE)); } } }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) { PsiElement position = parameters.getPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { return; } PhpIndex instance = PhpIndex.getInstance(position.getProject()); for(String constant : instance.getAllConstantNames(PrefixMatcher.ALWAYS_TRUE)) { resultSet.addElement(LookupElementBuilder.create(constant).withIcon(PhpIcons.CONSTANT)); } int foo = parameters.getOffset() - position.getTextRange().getStartOffset(); String before = position.getText().substring(0, foo); String[] parts = before.split("::"); if(parts.length >= 1) { PhpClass phpClass = PhpElementsUtil.getClassInterface(position.getProject(), parts[0].replace("\\\\", "\\")); if(phpClass != null) { phpClass.getFields().stream().filter(Field::isConstant).forEach(field -> resultSet.addElement(LookupElementBuilder.create(phpClass.getPresentableFQN().replace("\\", "\\\\") + "::" + field.getName()).withIcon(PhpIcons.CONSTANT)) ); } } } }
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) ); } } } }
protected String findCurrentText(CompletionParameters parameters, PsiElement element) { String originalText = findOriginalText(element); int elementOffset = parameters.getOffset() - element.getTextOffset(); return (elementOffset >= 0) && (elementOffset < originalText.length()) ? originalText.substring(0, elementOffset) : originalText; }
String findCurrentText(CompletionParameters parameters, PsiElement element) { String originalText = findOriginalText(element); int elementOffset = parameters.getOffset() - element.getTextOffset(); return (elementOffset >= 0) && (elementOffset < originalText.length()) ? originalText.substring(0, elementOffset) : originalText; }
static CompletionResultSet createResultSet(final CompletionParameters parameters, final String userPrefix, final Consumer<CompletionResult> consumer, final CompletionContributor contributor) { final PsiElement position = parameters.getPosition(); final String prefix = userPrefix != null ? userPrefix : findPrefix(position, parameters.getOffset()); final int lengthOfTextBeforePosition = parameters.getOffset(); final CamelHumpMatcher matcher = new CamelHumpMatcher(prefix, false); final CompletionSorter sorter = CompletionService.getCompletionService().defaultSorter(parameters, matcher); return new CompletionResultSetImpl(consumer, lengthOfTextBeforePosition, matcher, contributor, parameters, sorter, null); }
@Override protected String findCurrentText(CompletionParameters parameters, PsiElement element) { PsiElement command = element; while (command != null && !(command instanceof BashShebang)) { command = command.getParent(); } if (command != null) { BashShebang shebang = (BashShebang) command; String shellcommand = shebang.shellCommand(false); int elementOffset = parameters.getOffset() - shebang.commandRange().getStartOffset(); return (elementOffset > 0 && elementOffset <= shellcommand.length()) ? shellcommand.substring(0, elementOffset) : null; } return super.findCurrentText(parameters, element); } }
@Override public void fillCompletionVariants(@NotNull CompletionParameters parameters, @NotNull final CompletionResultSet result) { if (parameters.getCompletionType() != CompletionType.BASIC) { return; } PsiElement position = parameters.getPosition(); PsiFile topLevelFile = InjectedLanguageManager.getInstance(position.getProject()).getTopLevelFile(position); if (DomUtils.isMybatisFile(topLevelFile)) { if (shouldAddElement(position.getContainingFile(), parameters.getOffset())) { process(topLevelFile, result, position); } } }