/** * Get the variable value destruture pattern. * * @param ctx LS Service Operation context * @return {@link String} Generated Pattern clause */ public static String getVariableValueDestructurePattern(LSContext ctx) { boolean snippetSupport = ctx.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem() .getSnippetSupport(); String valueHolder; String bodyPlaceHolder; if (snippetSupport) { valueHolder = "${1:value}"; bodyPlaceHolder = "${2}"; } else { valueHolder = "value"; bodyPlaceHolder = " "; } return valueHolder + " => " + UtilSymbolKeys.OPEN_BRACE_KEY + bodyPlaceHolder + UtilSymbolKeys.CLOSE_BRACE_KEY; }
@Override @Pure public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; if (!super.equals(obj)) return false; CompletionCapabilities other = (CompletionCapabilities) obj; if (this.completionItem == null) { if (other.completionItem != null) return false; } else if (!this.completionItem.equals(other.completionItem)) return false; if (this.completionItemKind == null) { if (other.completionItemKind != null) return false; } else if (!this.completionItemKind.equals(other.completionItemKind)) return false; if (this.contextSupport == null) { if (other.contextSupport != null) return false; } else if (!this.contextSupport.equals(other.contextSupport)) return false; return true; }
public CompletionItemCapabilitiesDto(org.eclipse.lsp4j.CompletionItemCapabilities o) { if (o.getDocumentationFormat() == null) { setDocumentationFormat((java.util.List<java.lang.String>)null); } else { ArrayList<java.lang.String> documentationFormatVal= new ArrayList<java.lang.String>(); for (java.lang.String documentationFormatValX : o.getDocumentationFormat()) { java.lang.String documentationFormatValY = (java.lang.String)makeDto(documentationFormatValX);; documentationFormatVal.add(documentationFormatValY); if (o.getSnippetSupport() == null) { setSnippetSupport((java.lang.Boolean)null); } else { java.lang.Boolean snippetSupportVal = (java.lang.Boolean)makeDto(o.getSnippetSupport());; setSnippetSupport((java.lang.Boolean)snippetSupportVal); if (o.getCommitCharactersSupport() == null) { setCommitCharactersSupport((java.lang.Boolean)null); } else { java.lang.Boolean commitCharactersSupportVal = (java.lang.Boolean)makeDto(o.getCommitCharactersSupport());; setCommitCharactersSupport((java.lang.Boolean)commitCharactersSupportVal); if (o.getDeprecatedSupport() == null) { setDeprecatedSupport((java.lang.Boolean)null); } else { java.lang.Boolean deprecatedSupportVal = (java.lang.Boolean)makeDto(o.getDeprecatedSupport());; setDeprecatedSupport((java.lang.Boolean)deprecatedSupportVal); if (o.getPreselectSupport() == null) { setPreselectSupport((java.lang.Boolean)null); } else {
final Procedure1<CompletionCapabilities> _function_5 = (CompletionCapabilities it_4) -> { it_4.setDynamicRegistration(Boolean.valueOf(false)); CompletionItemCapabilities _completionItemCapabilities = new CompletionItemCapabilities(); final Procedure1<CompletionItemCapabilities> _function_6 = (CompletionItemCapabilities it_5) -> { it_5.setSnippetSupport(Boolean.valueOf(true)); it_5.setCommitCharactersSupport(Boolean.valueOf(true)); it_5.setDocumentationFormat(Collections.<String>unmodifiableList(CollectionLiterals.<String>newArrayList(MarkupKind.PLAINTEXT, MarkupKind.MARKDOWN))); }; CompletionItemCapabilities _doubleArrow_1 = ObjectExtensions.<CompletionItemCapabilities>operator_doubleArrow(_completionItemCapabilities, _function_6);
textDocument.setCodeAction(new CodeActionCapabilities()); textDocument.setCodeLens(new CodeLensCapabilities()); CompletionItemCapabilities ciCaps = new CompletionItemCapabilities(true); ciCaps.setDocumentationFormat(Collections.singletonList(MarkupKind.MARKDOWN)); textDocument.setCompletion(new CompletionCapabilities(ciCaps)); textDocument.setDefinition(new DefinitionCapabilities());
ClientCapabilities clientCap = new ClientCapabilities(); TextDocumentClientCapabilities textCap = new TextDocumentClientCapabilities(); CompletionCapabilities completionCap = new CompletionCapabilities(new CompletionItemCapabilities(true)); textCap.setCompletion(completionCap); clientCap.setTextDocument(textCap);
@Override @Pure public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((this.completionItem== null) ? 0 : this.completionItem.hashCode()); result = prime * result + ((this.completionItemKind== null) ? 0 : this.completionItemKind.hashCode()); return prime * result + ((this.contextSupport== null) ? 0 : this.contextSupport.hashCode()); } }
public boolean isSupportsCompletionDocumentationMarkdown() { //@formatter:off return v3supported && capabilities.getTextDocument().getCompletion() != null && capabilities.getTextDocument().getCompletion().getCompletionItem() != null && capabilities.getTextDocument().getCompletion().getCompletionItem().getDocumentationFormat() != null && capabilities.getTextDocument().getCompletion().getCompletionItem().getDocumentationFormat().contains(MarkupKind.MARKDOWN); //@formatter:on }
final Procedure1<CompletionCapabilities> _function_5 = (CompletionCapabilities it_4) -> { it_4.setDynamicRegistration(Boolean.valueOf(false)); CompletionItemCapabilities _completionItemCapabilities = new CompletionItemCapabilities(); final Procedure1<CompletionItemCapabilities> _function_6 = (CompletionItemCapabilities it_5) -> { it_5.setSnippetSupport(Boolean.valueOf(true)); it_5.setCommitCharactersSupport(Boolean.valueOf(true)); it_5.setDocumentationFormat(Collections.<String>unmodifiableList(CollectionLiterals.<String>newArrayList(MarkupKind.PLAINTEXT, MarkupKind.MARKDOWN))); }; CompletionItemCapabilities _doubleArrow_1 = ObjectExtensions.<CompletionItemCapabilities>operator_doubleArrow(_completionItemCapabilities, _function_6);
@Override @Pure public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((this.completionItem== null) ? 0 : this.completionItem.hashCode()); result = prime * result + ((this.completionItemKind== null) ? 0 : this.completionItemKind.hashCode()); return prime * result + ((this.contextSupport== null) ? 0 : this.contextSupport.hashCode()); } }
/** * Generate the match pattern clause for the given value. * * @param matchValue Match pattern value * @param ctx LS Service operation context * @return {@link String} Generated clause */ public static String generateMatchPattern(String matchValue, LSContext ctx) { boolean snippetSupport = ctx.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem() .getSnippetSupport(); String valueHolder; String bodyPlaceHolder; if (snippetSupport) { valueHolder = "${1:" + matchValue + "}"; bodyPlaceHolder = "${2}"; } else { valueHolder = matchValue; bodyPlaceHolder = " "; } return valueHolder + " => " + UtilSymbolKeys.OPEN_BRACE_KEY + bodyPlaceHolder + UtilSymbolKeys.CLOSE_BRACE_KEY; } }
@Override @Pure public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; if (!super.equals(obj)) return false; CompletionCapabilities other = (CompletionCapabilities) obj; if (this.completionItem == null) { if (other.completionItem != null) return false; } else if (!this.completionItem.equals(other.completionItem)) return false; if (this.completionItemKind == null) { if (other.completionItemKind != null) return false; } else if (!this.completionItemKind.equals(other.completionItemKind)) return false; if (this.contextSupport == null) { if (other.contextSupport != null) return false; } else if (!this.contextSupport.equals(other.contextSupport)) return false; return true; }
@Override public List<CompletionItem> resolveItems(LSServiceOperationContext context) { boolean isSnippet = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport(); CompletionItem resource = Snippet.DEF_RESOURCE.get().build(new CompletionItem(), isSnippet); return new ArrayList<>(Collections.singletonList(resource)); } }
private void fillArrowFunctionSnippet(BLangFunctionTypeNode functionTypeNode, LSContext context, List<CompletionItem> completionItems) throws LSCompletionException { List<BLangVariable> params = functionTypeNode.getParams(); BLangType returnBLangType = functionTypeNode.getReturnTypeNode(); String paramSignature = this.getParamsSnippet(params, false); boolean snippetSupport = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY) .getCompletionItem() .getSnippetSupport(); StringBuilder signature = new StringBuilder(paramSignature); signature.append(" => ") .append("${"); if (!(returnBLangType.type instanceof BNilType)) { signature.append(params.size() + 1) .append(":") .append(CommonUtil.getDefaultValueForType(returnBLangType.type)); } else { signature.append(params.size() + 1); } signature.append("};"); String label = "arrow function " + this.convertToLabel(paramSignature); SnippetBlock snippetBlock = new SnippetBlock(label, signature.toString(), ItemResolverConstants.SNIPPET_TYPE, SnippetBlock.SnippetType.SNIPPET); // Populate the anonymous function signature completion item completionItems.add(snippetBlock.build(new CompletionItem(), snippetSupport)); }
@Override public List<CompletionItem> resolveItems(LSServiceOperationContext context) { ParserRuleContext parserRuleContext = context.get(CompletionKeys.PARSER_RULE_CONTEXT_KEY); boolean isSnippet = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport(); if (parserRuleContext == null) { List<CompletionItem> completionItems = new ArrayList<>(); CompletionItem workerItem = Snippet.DEF_WORKER.get().build(new CompletionItem(), isSnippet); completionItems.add(workerItem); return completionItems; } AbstractItemResolver contextResolver = CompletionItemResolver.get(parserRuleContext.getClass()); if (contextResolver == null) { return new ArrayList<>(); } return contextResolver.resolveItems(context); } }
@Override public List<CompletionItem> resolveItems(LSServiceOperationContext context) { ParserRuleContext parserRuleContext = context.get(CompletionKeys.PARSER_RULE_CONTEXT_KEY); List<CompletionItem> completionItems = new ArrayList<>(); if (parserRuleContext == null) { boolean snippetCapability = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem() .getSnippetSupport(); CompletionItem worker = Snippet.DEF_WORKER.get().build(new CompletionItem(), snippetCapability); completionItems.add(worker); return completionItems; } AbstractItemResolver resolver = CompletionItemResolver.get(parserRuleContext.getClass()); if (resolver != null) { completionItems.addAll(resolver.resolveItems(context)); } return completionItems; } }
/** * Add top level items to the given completionItems List. * * @return {@link List} List of populated completion items */ private List<CompletionItem> addTopLevelItems(LSContext context) { boolean snippetCapability = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem() .getSnippetSupport(); ArrayList<CompletionItem> completionItems = new ArrayList<>(); completionItems.add(getStaticItem(Snippet.KW_IMPORT, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_FUNCTION, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_MAIN_FUNCTION, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_SERVICE, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_SERVICE_WEBSOCKET, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_SERVICE_WEBSUB, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_ANNOTATION, snippetCapability)); completionItems.add(getStaticItem(Snippet.STMT_NAMESPACE_DECLARATION, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_OBJECT_SNIPPET, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_RECORD, snippetCapability)); completionItems.add(getStaticItem(Snippet.KW_TYPE, snippetCapability)); completionItems.add(getStaticItem(Snippet.KW_PUBLIC, snippetCapability)); completionItems.add(getStaticItem(Snippet.KW_FINAL, snippetCapability)); completionItems.add(getStaticItem(Snippet.KW_CONST, snippetCapability)); completionItems.add(getStaticItem(Snippet.KW_EXTERN, snippetCapability)); completionItems.add(getStaticItem(Snippet.DEF_ERROR, snippetCapability)); completionItems.add(getStaticItem(Snippet.KW_LISTENER, snippetCapability)); 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)); } }
@Override public List<CompletionItem> resolveItems(LSServiceOperationContext ctx) { ArrayList<CompletionItem> completionItems = new ArrayList<>(); ParserRuleContext prContext = ctx.get(CompletionKeys.PARSER_RULE_CONTEXT_KEY); boolean snippetSupport = ctx.get(CompletionKeys.CLIENT_CAPABILITIES_KEY) .getCompletionItem() .getSnippetSupport(); AbstractItemResolver resolver = prContext == null ? null : CompletionItemResolver.get(prContext.getClass()); List<String> poppedTokens = CommonUtil.getPoppedTokenStrings(ctx); if (this.isAnnotationStart(ctx)) { resolver = CompletionItemResolver.get(ParserRuleAnnotationAttachmentResolver.class); completionItems.addAll(resolver.resolveItems(ctx)); } else if (poppedTokens.size() >= 1 && this.isAccessModifierToken(poppedTokens.get(0))) { // Provides completions after public keyword completionItems.addAll(this.addTopLevelItems(ctx)); completionItems.addAll(this.populateBasicTypes(ctx.get(CompletionKeys.VISIBLE_SYMBOLS_KEY))); } else if (poppedTokens.size() >= 1 && poppedTokens.get(0).equals(ItemResolverConstants.EXTERN_KEYWORD)) { // Completion after the extern keyword. Only the signature of function should suggest completionItems.add(Snippet.DEF_FUNCTION_SIGNATURE.get().build(new CompletionItem(), snippetSupport)); } else if (resolver == null || resolver instanceof ParserRuleGlobalVariableDefinitionContextResolver) { completionItems.addAll(getGlobalVarDefCompletions(ctx, poppedTokens, resolver)); } else { completionItems.addAll(resolver.resolveItems(ctx)); } ItemSorters.get(DefaultItemSorter.class).sortItems(ctx, completionItems); return completionItems; }
@Override public List<CompletionItem> resolveItems(LSServiceOperationContext ctx) { ArrayList<CompletionItem> completionItems = new ArrayList<>(); ParserRuleContext parserRuleContext = ctx.get(CompletionKeys.PARSER_RULE_CONTEXT_KEY); boolean isSnippet = ctx.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport(); List<String> poppedTokens = CommonUtil.getPoppedTokenStrings(ctx); if (this.isAnnotationStart(ctx)) { completionItems.addAll(CompletionItemResolver .get(ParserRuleAnnotationAttachmentResolver.class).resolveItems(ctx)); } else if (parserRuleContext == null || parserRuleContext instanceof BallerinaParser.ObjectFieldDefinitionContext) { if (poppedTokens.contains(UtilSymbolKeys.EQUAL_SYMBOL_KEY)) { AbstractItemResolver resolver = CompletionItemResolver .get(BallerinaParser.VariableDefinitionStatementContext.class); completionItems.addAll(resolver.resolveItems(ctx)); } else { completionItems.addAll(this.populateBasicTypes(ctx.get(CompletionKeys.VISIBLE_SYMBOLS_KEY))); completionItems.add(Snippet.DEF_RESOURCE.get().build(new CompletionItem(), isSnippet)); completionItems.add(Snippet.DEF_FUNCTION.get().build(new CompletionItem(), isSnippet)); } } else { AbstractItemResolver resolver = CompletionItemResolver.get(parserRuleContext.getClass()); if (resolver != null) { completionItems.addAll(resolver.resolveItems(ctx)); } } return completionItems; } }