@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet result) { PsiElement position = completionParameters.getPosition(); if (!AppEngineExtension.isAppEngineContext(position)) { return; } } }
@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); } }
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 paramProcessingContext, @NotNull CompletionResultSet paramCompletionResultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } String routeName = TwigUtil.getMatchingRouteNameOnParameter(parameters.getOriginalPosition()); if(routeName == null) { return; } paramCompletionResultSet.addAllElements(Arrays.asList( RouteHelper.getRouteParameterLookupElements(parameters.getPosition().getProject(), routeName)) ); }
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) { 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)); } } } }
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)) ); } } } }
ProcessingContext context, @NotNull CompletionResultSet result) { PsiElement position = parameters.getPosition(); PsiElement parent = position.getParent(); if (prevDot(parent)) return; PsiFile psiFile = parameters.getOriginalFile(); if (!(psiFile instanceof GoFile && parent instanceof GoReferenceExpressionBase)) return; GoFile file = (GoFile)psiFile; if (parameters.getInvocationCount() < 2 && matcher.getPrefix().isEmpty()) { result.restartCompletionOnPrefixChange(StandardPatterns.string().longerThan(0)); return;
@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 addBashCompletions(String currentText, CompletionParameters parameters, ProcessingContext context, CompletionResultSet result) { PsiElement element = parameters.getPosition(); PsiElement original = parameters.getOriginalPosition(); BashVar varElement = PsiTreeUtil.getContextOfType(original, BashVar.class, false); boolean dollarPrefix = currentText != null && currentText.startsWith("$"); boolean insideExpansion = element.getParent() != null && element.getParent().getParent() instanceof BashParameterExpansion; if (varElement == null && !dollarPrefix && !insideExpansion) { return; } int invocationCount = parameters.getInvocationCount(); int resultLength = 0; // fixme Currently we only look into the current file if no original element is given, // fixme better: we should collect locals and the included vars from the original file if (varElement != null) { resultLength += addCollectedVariables(original, result, new BashVarVariantsProcessor(varElement)); } else { //not in a variable element, but collect all known variable names at this offset in the current file PsiElement lookupElement = original != null ? original : element; resultLength += addCollectedVariables(lookupElement, result, new BashVarVariantsProcessor(lookupElement)); } if (currentText != null && (dollarPrefix || insideExpansion) && (invocationCount >= 2 || resultLength == 0)) { Project project = element.getProject(); addBuiltInVariables(result, project); addGlobalVariables(result, project); } else { result.addLookupAdvertisement("Press twice for global variables"); } }
@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); } } }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, final @NotNull CompletionResultSet resultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(!Symfony2ProjectComponent.isEnabled(psiElement)) { return; } addClassCompletion(parameters, resultSet, psiElement, withInterface, withLeadingBackslash); } public static void addClassCompletion(CompletionParameters parameters, final CompletionResultSet resultSet, PsiElement psiElement, boolean withInterface) {
public Optional<SwaggerFileType> getFileType(final CompletionParameters parameters) { final Project project = parameters.getOriginalFile().getProject(); final VirtualFile virtualFile = parameters.getOriginalFile().getVirtualFile(); return getFileType(project, virtualFile); }
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 final CompletionParameters parameters, final ProcessingContext context, @NotNull final CompletionResultSet result) { final int position = parameters.getEditor().getCaretModel().getOffset(); // PsiElement position = parameters.getPosition(); final PsiFile file = parameters.getOriginalFile(); List<Completion> completions = null; try { completions = dcdCompletionClient.autoComplete(position, file); for (final Completion completion : completions) { result.addElement(createLookupElement(completion.completionText(),"",completion.completionType())); } } catch (final DCDCompletionServer.DCDError dcdError) { dcdError.printStackTrace(); } } }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull final CompletionResultSet result) { BnfFile file = (BnfFile)parameters.getOriginalFile(); PsiElement positionRefOrToken = PsiTreeUtil.getParentOfType(parameters.getOriginalPosition(), BnfReferenceOrToken.class); Set<String> explicitTokens = RuleGraphHelper.getTokenNameToTextMap(file).keySet(); for (String s : explicitTokens) { result.addElement(LookupElementBuilder.create(s)); } for (BnfRule rule : file.getRules()) { for (BnfReferenceOrToken element : SyntaxTraverser.psiTraverser(rule.getExpression()).filter(BnfReferenceOrToken.class)) { if (element == positionRefOrToken) continue; if (element.resolveRule() == null) { result.addElement(LookupElementBuilder.create(element.getText())); } } } } });
@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)); } } } }
@Nullable private Project getProject(final @NotNull CompletionParameters parameters) { Validate.notNull(parameters); return parameters.getEditor().getProject(); }