if (parameters.getInvocationCount() < 2 && matcher.getPrefix().isEmpty()) { result.restartCompletionOnPrefixChange(StandardPatterns.string().longerThan(0)); return;
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)); } } } });
addedItems += functions.size(); int invocationCount = parameters.getInvocationCount();
@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 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"); } }
if (!attrCompletion && parameters.getInvocationCount() < 2) { for (String keywords : suggestKeywords(parameters.getPosition())) { result.addElement(TailTypeDecorator.withTail(LookupElementBuilder.create(keywords), TailType.SPACE));