private void decreasePriority(CompletionItem completionItem) { int sortText = Integer.parseInt(completionItem.getSortText()); completionItem.setSortText(Integer.toString(sortText + 1)); } }
private void increasePriority(CompletionItem completionItem) { int sortText = Integer.parseInt(completionItem.getSortText()); completionItem.setSortText(Integer.toString(sortText - 1)); }
switch (detail) { case ItemResolverConstants.NONE: completionItem.setSortText(Priority.PRIORITY220.toString()); break; case ItemResolverConstants.KEYWORD_TYPE: completionItem.setSortText(Priority.PRIORITY210.toString()); break; case ItemResolverConstants.STATEMENT_TYPE: completionItem.setSortText(Priority.PRIORITY200.toString()); break; case ItemResolverConstants.SNIPPET_TYPE: completionItem.setSortText(Priority.PRIORITY190.toString()); break; case ItemResolverConstants.FIELD_TYPE: completionItem.setSortText(Priority.PRIORITY180.toString()); break; case ItemResolverConstants.B_TYPE: completionItem.setSortText(Priority.PRIORITY170.toString()); break; case ItemResolverConstants.PACKAGE_TYPE: completionItem.setSortText(Priority.PRIORITY140.toString()); break; case ItemResolverConstants.FUNCTION_TYPE: completionItem.setSortText(Priority.PRIORITY120.toString()); break; default: completionItem.setSortText(Priority.PRIORITY110.toString()); break;
private void populateWhenCursorBeforeOrAfterEp(List<CompletionItem> completionItems, boolean snippetCapability) { CompletionItem workerSnippet = this.getWorkerSnippet(snippetCapability); this.setPriorities(completionItems); workerSnippet.setSortText(Priority.PRIORITY160.toString()); completionItems.add(workerSnippet); }
private void populateWhenCursorBeforeOrAfterEp(List<CompletionItem> completionItems, boolean snippetCapability) { CompletionItem xmlnsSnippet = Snippet.STMT_NAMESPACE_DECLARATION.get(). build(new CompletionItem(), snippetCapability); CompletionItem resSnippet = this.getResourceSnippet(snippetCapability); this.setPriorities(completionItems); xmlnsSnippet.setSortText(Priority.PRIORITY150.toString()); resSnippet.setSortText(Priority.PRIORITY160.toString()); completionItems.add(xmlnsSnippet); completionItems.add(resSnippet); }
public CompletionItem toCompletionItem(CompletionProposal proposal, int index) { final CompletionItem $ = new CompletionItem(); $.setKind(mapKind(proposal.getKind())); Map<String, String> data = new HashMap<>(); // append data field so that resolve request can use it. data.put(CompletionResolveHandler.DATA_FIELD_URI, JDTUtils.toURI(unit)); data.put(CompletionResolveHandler.DATA_FIELD_REQUEST_ID,String.valueOf(response.getId())); data.put(CompletionResolveHandler.DATA_FIELD_PROPOSAL_ID,String.valueOf(index)); $.setData(data); this.descriptionProvider.updateDescription(proposal, $); $.setSortText(SortTextHelper.computeSortText(proposal)); return $; }
/** * Sort Completion Items based on a particular criteria. * * @param ctx Completion context * @param completionItems List of initial completion items */ @Override public void sortItems(LSServiceOperationContext ctx, List<CompletionItem> completionItems) { this.setPriorities(completionItems); completionItems.forEach(completionItem -> { String detail = completionItem.getDetail(); String label = completionItem.getLabel(); if (detail.equals(ItemResolverConstants.FUNCTION_TYPE)) { String signature = completionItem.getLabel(); String returnType = signature .substring(signature.lastIndexOf(OPEN_BRACKET), signature.lastIndexOf(CLOSE_BRACKET)).trim(); if (returnType.endsWith(ItemResolverConstants.BOOLEAN_TYPE)) { completionItem.setSortText(Priority.shiftPriority(completionItem.getSortText(), -1)); } } else if (detail.equals(ItemResolverConstants.BOOLEAN_TYPE)) { completionItem.setSortText(Priority.shiftPriority(completionItem.getSortText(), -1)); } else if (ItemResolverConstants.TRUE_KEYWORD.equals(label) || ItemResolverConstants.FALSE_KEYWORD.equals(label)) { completionItem.setSortText(Priority.PRIORITY110.toString()); } }); } }
@Override void setPriorities(List<CompletionItem> completionItems) { completionItems.forEach(completionItem -> { switch (completionItem.getDetail()) { case ItemResolverConstants.NONE: case ItemResolverConstants.KEYWORD_TYPE: case ItemResolverConstants.STATEMENT_TYPE: case ItemResolverConstants.SNIPPET_TYPE: case ItemResolverConstants.FIELD_TYPE: case ItemResolverConstants.B_TYPE: case ItemResolverConstants.PACKAGE_TYPE: case ItemResolverConstants.FUNCTION_TYPE: super.setPriority(completionItem); break; default: completionItem.setSortText(Priority.PRIORITY220.toString()); break; } }); }
/** * Sort Completion Items based on a particular criteria. * * @param ctx Completion context * @param completionItems List of initial completion items */ @Override public void sortItems(LSServiceOperationContext ctx, List<CompletionItem> completionItems) { completionItems.forEach(completionItem -> { if (completionItem.getDetail().equals(ItemResolverConstants.B_TYPE)) { completionItem.setSortText(Priority.PRIORITY150.toString()); } else if (completionItem.getDetail().equals(ItemResolverConstants.FUNCTION_TYPE) && InsertTextFormat.Snippet.equals(completionItem.getInsertTextFormat())) { completionItem.setDetail(ItemResolverConstants.SNIPPET_TYPE); completionItem.setSortText(Priority.PRIORITY120.toString()); } else if (completionItem.getDetail().equals(ItemResolverConstants.FUNCTION_TYPE)) { completionItem.setSortText(Priority.PRIORITY140.toString()); } else if (InsertTextFormat.Snippet.equals(completionItem.getInsertTextFormat())) { completionItem.setDetail(ItemResolverConstants.SNIPPET_TYPE); completionItem.setSortText(Priority.PRIORITY110.toString()); } else { completionItem.setSortText(Priority.PRIORITY130.toString()); } }); } }
if (returnTypes.length == 1 && returnTypes[0].equals(constraintType)) { String newPriority = Priority.shiftPriority(completionItem.getSortText(), -1); completionItem.setSortText(String.valueOf(newPriority)); completionItem.setSortText(Priority.shiftPriority(Priority.PRIORITY110.toString(), -1)); } else if (completionItem.getDetail().equals(constraintType)) { completionItem.setSortText(Priority.shiftPriority(completionItem.getSortText(), -1));
/** * Get completion items list for struct fields. * * @param structFields List of struct fields * @return {@link List} List of completion items for the struct fields */ public static List<CompletionItem> getStructFieldCompletionItems(List<BField> structFields) { List<CompletionItem> completionItems = new ArrayList<>(); structFields.forEach(bStructField -> { StringBuilder insertText = new StringBuilder(bStructField.getName().getValue() + ": "); if (bStructField.getType() instanceof BStructureType) { insertText.append("{").append(LINE_SEPARATOR).append("\t${1}").append(LINE_SEPARATOR).append("}"); } else { insertText.append("${1:").append(getDefaultValueForType(bStructField.getType())).append("}"); } CompletionItem fieldItem = new CompletionItem(); fieldItem.setInsertText(insertText.toString()); fieldItem.setInsertTextFormat(InsertTextFormat.Snippet); fieldItem.setLabel(bStructField.getName().getValue()); fieldItem.setDetail(ItemResolverConstants.FIELD_TYPE); fieldItem.setKind(CompletionItemKind.Field); fieldItem.setSortText(Priority.PRIORITY120.toString()); completionItems.add(fieldItem); }); return completionItems; }
@Override public void sortItems(LSServiceOperationContext ctx, List<CompletionItem> completionItems) { BLangNode previousNode = ctx.get(CompletionKeys.PREVIOUS_NODE_KEY); boolean isSnippet = ctx.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport(); this.removeCompletionsByType(new ArrayList<>(Collections.singletonList(ItemResolverConstants.STATEMENT_TYPE)), completionItems); if (previousNode == null) { this.populateWhenCursorBeforeOrAfterEp(completionItems, isSnippet); } else if (previousNode instanceof BLangSimpleVariableDef) { this.setPriorities(completionItems); CompletionItem resItem = this.getResourceSnippet(isSnippet); resItem.setSortText(Priority.PRIORITY160.toString()); completionItems.add(resItem); } else if (previousNode instanceof BLangResource) { completionItems.clear(); completionItems.add(this.getResourceSnippet(isSnippet)); } }
/** * Get the completion item to fill all the struct fields. * * @param fields List of struct fields * @return {@link CompletionItem} Completion Item to fill all the options */ public static CompletionItem getFillAllStructFieldsItem(List<BField> fields) { List<String> fieldEntries = new ArrayList<>(); fields.forEach(bStructField -> { String defaultFieldEntry = bStructField.getName().getValue() + UtilSymbolKeys.PKG_DELIMITER_KEYWORD + " " + getDefaultValueForType(bStructField.getType()); fieldEntries.add(defaultFieldEntry); }); String insertText = String.join(("," + LINE_SEPARATOR), fieldEntries); String label = "Add All Attributes"; CompletionItem completionItem = new CompletionItem(); completionItem.setLabel(label); completionItem.setInsertText(insertText); completionItem.setDetail(ItemResolverConstants.NONE); completionItem.setKind(CompletionItemKind.Property); completionItem.setSortText(Priority.PRIORITY110.toString()); return completionItem; }
memberItem.setKind(CompletionItemKind.Snippet); memberItem.setInsertTextFormat(InsertTextFormat.Snippet); memberItem.setSortText(Priority.PRIORITY130.toString()); completionItems.add(memberItem); }); allFillerItem.setKind(CompletionItemKind.Snippet); allFillerItem.setInsertTextFormat(InsertTextFormat.Snippet); allFillerItem.setSortText(Priority.PRIORITY110.toString()); anyFillerItem.setKind(CompletionItemKind.Snippet); anyFillerItem.setInsertTextFormat(InsertTextFormat.Snippet); anyFillerItem.setSortText(Priority.PRIORITY120.toString());
@Override public void sortItems(LSServiceOperationContext ctx, List<CompletionItem> completionItems) { BLangNode previousNode = ctx.get(CompletionKeys.PREVIOUS_NODE_KEY); boolean isSnippet = ctx.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport(); this.clearItemsIfWorkerExists(ctx, completionItems); if (previousNode == null) { this.populateWhenCursorBeforeOrAfterEp(completionItems, isSnippet); } else if (previousNode instanceof BLangSimpleVariableDef) { if (ctx.get(CompletionKeys.INVOCATION_STATEMENT_KEY) == null || !ctx.get(CompletionKeys.INVOCATION_STATEMENT_KEY)) { CompletionItem workerItem = this.getWorkerSnippet(isSnippet); workerItem.setSortText(Priority.PRIORITY160.toString()); completionItems.add(workerItem); } } else if (previousNode instanceof BLangWorker) { completionItems.add(this.getWorkerSnippet(isSnippet)); } this.setPriorities(completionItems); }
ci.setFilterText(JAVA_DOC_COMMENT); ci.setLabel(JAVA_DOC_COMMENT); ci.setSortText(SortTextHelper.convertRelevance(0)); ci.setKind(CompletionItemKind.Snippet); ci.setInsertTextFormat(isSnippetSupported ? InsertTextFormat.Snippet : InsertTextFormat.PlainText);
private static CompletionItem getClassSnippet(ICompilationUnit cu, CompletionContext completionContext, boolean needsPublic, IProgressMonitor monitor) { if (!accept(cu, completionContext, true)) { return null; } if (monitor.isCanceled()) { return null; } final CompletionItem classSnippetItem = new CompletionItem(); classSnippetItem.setLabel(CLASS_SNIPPET_LABEL); classSnippetItem.setFilterText(CLASS_SNIPPET_LABEL); classSnippetItem.setSortText(SortTextHelper.convertRelevance(1)); try { if (needsPublic) { classSnippetItem.setInsertText(getSnippetContent(cu, CodeGenerationTemplate.CLASSSNIPPET_PUBLIC, cu.findRecommendedLineSeparator(), true)); } else { classSnippetItem.setInsertText(getSnippetContent(cu, CodeGenerationTemplate.CLASSSNIPPET_DEFAULT, cu.findRecommendedLineSeparator(), true)); } setFields(classSnippetItem, cu); } catch (CoreException e) { JavaLanguageServerPlugin.log(e.getStatus()); return null; } return classSnippetItem; }
item.setSortText(Strings.padStart(Integer.toString((idx).intValue()), 5, '0')); List<CompletionItem> _items = result.getItems(); _items.add(item);
private static CompletionItem getInterfaceSnippet(ICompilationUnit cu, CompletionContext completionContext, boolean needsPublic, IProgressMonitor monitor) { if (!accept(cu, completionContext, false)) { return null; } if (monitor.isCanceled()) { return null; } final CompletionItem interfaceSnippetItem = new CompletionItem(); interfaceSnippetItem.setFilterText(INTERFACE_SNIPPET_LABEL); interfaceSnippetItem.setLabel(INTERFACE_SNIPPET_LABEL); interfaceSnippetItem.setSortText(SortTextHelper.convertRelevance(0)); try { if (needsPublic) { interfaceSnippetItem.setInsertText(getSnippetContent(cu, CodeGenerationTemplate.INTERFACESNIPPET_PUBLIC, cu.findRecommendedLineSeparator(), true)); } else { interfaceSnippetItem.setInsertText(getSnippetContent(cu, CodeGenerationTemplate.INTERFACESNIPPET_DEFAULT, cu.findRecommendedLineSeparator(), true)); } setFields(interfaceSnippetItem, cu); } catch (CoreException e) { JavaLanguageServerPlugin.log(e.getStatus()); return null; } return interfaceSnippetItem; }
private CompletionItem adaptItem(TextDocument doc, ICompletionProposal completion, SortKeys sortkeys) throws Exception { CompletionItem item = new CompletionItem(); item.setLabel(completion.getLabel()); item.setKind(completion.getKind()); item.setSortText(sortkeys.next()); item.setFilterText(completion.getFilterText()); item.setDetail(completion.getDetail()); if (completion.isDeprecated()) { item.setDeprecated(completion.isDeprecated()); } resolveEdits(doc, completion, item); //Warning. Its not allowed by LSP spec to resolveEdits //lazy as we used to do in the past. if (resolver!=null) { item.setData(resolver.resolveLater(completion, doc)); } else { resolveItem(doc, completion, item); } return item; }