/** * 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; }
/** * 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 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; } }
@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)); } }
/** * 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 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; } }
private void fillFunctionSnippet(BLangFunctionTypeNode functionTypeNode, LSContext context, List<CompletionItem> completionItems) throws LSCompletionException { List<BLangVariable> params = functionTypeNode.getParams(); BLangType returnBLangType = functionTypeNode.getReturnTypeNode(); boolean snippetSupport = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY) .getCompletionItem() .getSnippetSupport(); String functionSignature = this.getFunctionSignature(params, returnBLangType); String body = this.getAnonFunctionSnippetBody(returnBLangType, params.size()); String snippet = functionSignature + body; String label = this.convertToLabel(functionSignature); SnippetBlock snippetBlock = new SnippetBlock(label, snippet, ItemResolverConstants.SNIPPET_TYPE, SnippetBlock.SnippetType.SNIPPET); // Populate the anonymous function signature completion item completionItems.add(snippetBlock.build(new CompletionItem(), snippetSupport)); }
ArrayList<CompletionItem> completionItems = new ArrayList<>(); BLangNode objectNode = context.get(CompletionKeys.SYMBOL_ENV_NODE_KEY); boolean isSnippet = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport();
List<SymbolInfo> filteredList = context.get(CompletionKeys.VISIBLE_SYMBOLS_KEY); boolean snippetCapability = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY) .getCompletionItem().getSnippetSupport();
private static String getIterableOpLambdaParam(BType bType, LSContext context) { String params = ""; boolean isSnippet = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport(); PackageID currentPkgId = context.get(DocumentServiceKeys.CURRENT_PACKAGE_ID_KEY); if (bType instanceof BMapType) { BMapType bMapType = (BMapType) bType; String valueType = FunctionGenerator.generateTypeDefinition(null, currentPkgId, bMapType.constraint); params = Snippet.ITR_ON_MAP_PARAMS.get().getString(isSnippet) .replace(UtilSymbolKeys.ITR_OP_LAMBDA_KEY_REPLACE_TOKEN, "string") .replace(UtilSymbolKeys.ITR_OP_LAMBDA_VALUE_REPLACE_TOKEN, valueType); } else if (bType instanceof BArrayType) { BArrayType bArrayType = (BArrayType) bType; String valueType = FunctionGenerator.generateTypeDefinition(null, currentPkgId, bArrayType.eType); params = valueType + " value"; } else if (bType instanceof BJSONType) { params = Snippet.ITR_ON_JSON_PARAMS.get().getString(isSnippet); } else if (bType instanceof BXMLType) { params = Snippet.ITR_ON_XML_PARAMS.get().getString(isSnippet); } return params; }
} else { boolean isSnippet = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem() .getSnippetSupport(); List<SymbolInfo> filteredSymbols = context.get(CompletionKeys.VISIBLE_SYMBOLS_KEY); itemSorterClass = context.get(CompletionKeys.BLOCK_OWNER_KEY).getClass();
private static SymbolInfo getIterableOpSymbolInfo(SnippetBlock operation, @Nullable BType bType, String label, LSContext context) { boolean isSnippet = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY).getCompletionItem().getSnippetSupport(); String signature = ""; SymbolInfo.CustomOperationSignature customOpSignature;
@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); }
public boolean isCompletionSnippetsSupported() { //@formatter:off return v3supported && capabilities.getTextDocument().getCompletion() != null && capabilities.getTextDocument().getCompletion().getCompletionItem() != null && isTrue(capabilities.getTextDocument().getCompletion().getCompletionItem().getSnippetSupport()); //@formatter:on }
boolean supportSnippet = context.get(CompletionKeys.CLIENT_CAPABILITIES_KEY) .getCompletionItem() .getSnippetSupport(); ArrayList<CompletionItem> completionItems = new ArrayList<>();
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);