private void createJavadocSimpleProposalLabel(CompletionProposal proposal, CompletionItem item) { item.setLabel(createSimpleLabel(proposal).toString()); }
private void createSimpleLabelWithType(CompletionProposal proposal, CompletionItem item) { StringBuilder nameBuffer= new StringBuilder(); nameBuffer.append(proposal.getCompletion()); item.setInsertText(nameBuffer.toString()); char[] typeName= Signature.getSignatureSimpleName(proposal.getSignature()); if (typeName.length > 0) { nameBuffer.append(VAR_TYPE_SEPARATOR); nameBuffer.append(typeName); } item.setLabel(nameBuffer.toString()); }
private void createJavadocTypeProposalLabel(char[] fullName, CompletionItem item) { // only display innermost type name as type name, using any // enclosing types as qualification int qIndex= findSimpleNameStart(fullName); StringBuilder nameBuffer= new StringBuilder(); String name = new String(fullName, qIndex, fullName.length - qIndex); nameBuffer.append("{@link "); //$NON-NLS-1$ nameBuffer.append(name); nameBuffer.append('}'); item.setLabel(nameBuffer.toString()); item.setFilterText(name); if (qIndex > 0) { item.setDetail(new String(fullName, 0, qIndex - 1)); } }
void createTypeProposalLabel(char[] fullName, CompletionItem item) { // only display innermost type name as type name, using any // enclosing types as qualification int qIndex= findSimpleNameStart(fullName); String name = new String(fullName, qIndex, fullName.length - qIndex); StringBuilder nameBuffer= new StringBuilder(); nameBuffer.append(name); if (qIndex > 0) { nameBuffer.append(PACKAGE_NAME_SEPARATOR); nameBuffer.append(new String(fullName,0,qIndex-1)); } item.setFilterText(name); item.setInsertText(name); item.setLabel(nameBuffer.toString()); }
/** * Creates and returns a completion item. * * @param bSymbol BSymbol * @param label label * @param type variable type * @return {@link CompletionItem} */ public static CompletionItem build(BVarSymbol bSymbol, String label, String type) { CompletionItem item = new CompletionItem(); item.setLabel(label); String[] delimiterSeparatedTokens = (label).split("\\."); item.setInsertText(delimiterSeparatedTokens[delimiterSeparatedTokens.length - 1]); item.setDetail((type.equals("")) ? ItemResolverConstants.NONE : type); setMeta(item, bSymbol); return item; }
/** * Creates and returns a completion item. * * @param bSymbol BSymbol * @return {@link CompletionItem} */ public static CompletionItem build(BInvokableSymbol bSymbol) { CompletionItem item = new CompletionItem(); setMeta(item, bSymbol); if (bSymbol != null) { // Override function signature Pair<String, String> functionSignature = getFunctionSignature(bSymbol); item.setInsertText(functionSignature.getLeft()); item.setLabel(functionSignature.getRight()); } return item; }
private void createAnonymousTypeLabel(CompletionProposal proposal, CompletionItem item) { char[] declaringTypeSignature= proposal.getDeclarationSignature(); declaringTypeSignature= Signature.getTypeErasure(declaringTypeSignature); String name = new String(Signature.getSignatureSimpleName(declaringTypeSignature)); item.setInsertText(name); StringBuilder buf= new StringBuilder(); buf.append(name); buf.append('('); appendUnboundedParameterList(buf, proposal); buf.append(')'); buf.append(" "); //$NON-NLS-1$ buf.append("Anonymous Inner Type"); //TODO: consider externalization item.setLabel(buf.toString()); if (proposal.getRequiredProposals() != null) { char[] signatureQualifier= Signature.getSignatureQualifier(declaringTypeSignature); if (signatureQualifier.length > 0) { item.setDetail(String.valueOf(signatureQualifier)); } } setDeclarationSignature(item, String.valueOf(declaringTypeSignature)); }
private void populateTrueFalseKeywords(List<CompletionItem> completionItems) { CompletionItem trueItem = new CompletionItem(); trueItem.setLabel(ItemResolverConstants.TRUE_KEYWORD); trueItem.setInsertText(ItemResolverConstants.TRUE_KEYWORD); trueItem.setDetail(ItemResolverConstants.KEYWORD_TYPE); trueItem.setKind(CompletionItemKind.Value); completionItems.add(trueItem); CompletionItem falseItem = new CompletionItem(); falseItem.setLabel(ItemResolverConstants.FALSE_KEYWORD); falseItem.setInsertText(ItemResolverConstants.FALSE_KEYWORD); falseItem.setDetail(ItemResolverConstants.KEYWORD_TYPE); trueItem.setKind(CompletionItemKind.Value); completionItems.add(falseItem); } }
/** * Creates and returns a completion item. * * @param bSymbol BSymbol or null * @param label label * @return {@link CompletionItem} */ public static CompletionItem build(BTypeSymbol bSymbol, String label) { CompletionItem item = new CompletionItem(); item.setLabel(label); String[] delimiterSeparatedTokens = (label).split("\\."); item.setInsertText(delimiterSeparatedTokens[delimiterSeparatedTokens.length - 1]); item.setDetail(ItemResolverConstants.B_TYPE); setMeta(item, bSymbol); return item; }
/** * Creates and returns a completion item. * * @param bSymbol BSymbol or null * @param label label * @param insertText insert text * @return {@link CompletionItem} */ public static CompletionItem build(BInvokableSymbol bSymbol, String label, String insertText) { CompletionItem item = new CompletionItem(); item.setLabel(label); item.setInsertText(insertText); setMeta(item, bSymbol); return item; }
/** * Updates the label and detail for {@link CompletionItem} with * <ul> * <li>the method name</li> * <li>the raw simple name of the declaring type</li> * </ul> * * @param methodProposal the method proposal to display * @param item the item to set values to */ private void createJavadocMethodProposalLabel(CompletionProposal methodProposal, CompletionItem item) { // method name item.setLabel(String.valueOf(methodProposal.getCompletion())); // declaring type String declaringType= extractDeclaringTypeFQN(methodProposal); declaringType= Signature.getSimpleName(declaringType); item.setDetail(declaringType); }
private void createPackageProposalLabel(CompletionProposal proposal, CompletionItem item) { Assert.isTrue(proposal.getKind() == CompletionProposal.PACKAGE_REF || proposal.getKind() == CompletionProposal.MODULE_REF || proposal.getKind() == CompletionProposal.MODULE_DECLARATION); item.setLabel(String.valueOf(proposal.getDeclarationSignature())); }
/** * 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; }
private static CompletionItem getImportCompletion(String label, String insertText) { CompletionItem item = new CompletionItem(); item.setLabel(label); item.setInsertText(insertText); item.setKind(CompletionItemKind.Module); item.setDetail(ItemResolverConstants.PACKAGE_TYPE); return item; } }
/** * Populate a completion item with the given data and return it. * * @param insertText insert text * @param type type of the completion item * @param label completion item label * @return {@link CompletionItem} Populated Completion Item */ private CompletionItem populateCompletionItem(String insertText, String type, String label) { CompletionItem completionItem = new CompletionItem(); completionItem.setInsertText(insertText); completionItem.setDetail(type); completionItem.setLabel(label); completionItem.setKind(CompletionItemKind.Keyword); return completionItem; } }
private CompletionItem getMatchFieldSnippetCompletion(String snippet, String label) { CompletionItem completionItem = new CompletionItem(); completionItem.setInsertText(snippet); completionItem.setLabel(label); completionItem.setInsertTextFormat(InsertTextFormat.Snippet); completionItem.setDetail(ItemResolverConstants.SNIPPET_TYPE); completionItem.setKind(CompletionItemKind.Snippet); return completionItem; } }
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; }
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; }
/** * Get the Ballerina Constant Completion Item. * * @param symbolInfo symbol information * @param context Language Server Operation Context * @return {@link CompletionItem} completion item */ private CompletionItem getBallerinaConstantCompletionItem(SymbolInfo symbolInfo, LSContext context) { BSymbol bSymbol = symbolInfo.getScopeEntry().symbol; if (!(bSymbol instanceof BConstantSymbol)) { return null; } CompletionItem completionItem = new CompletionItem(); completionItem.setLabel(bSymbol.getName().getValue()); completionItem.setInsertText(bSymbol.getName().getValue()); completionItem.setDetail(CommonUtil.getBTypeName(((BConstantSymbol) bSymbol).literalValueType, context)); completionItem.setDocumentation(ItemResolverConstants.CONSTANT_TYPE); completionItem.setKind(CompletionItemKind.Variable); return completionItem; } }
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; }