protected CompletionItem assertCompletionWithLabel(Predicate<String> expectLabel) throws Exception { List<CompletionItem> completions = getCompletions(); Optional<CompletionItem> completion = completions.stream() .filter((item) -> expectLabel.test(item.getLabel())) .findFirst(); if (completion.isPresent()) { return completion.get(); } fail("Not found in "+ completions.stream().map(c -> c.getLabel()).collect(Collectors.toList())); return null; //unreachable but compiler doesn't know. }
private String sortKey(CompletionItem item) { String k = item.getSortText(); if (k==null) { k = item.getLabel(); } return k; } });
protected CompletionItem assertCompletionWithLabel(String expectLabel) throws Exception { List<CompletionItem> completions = getCompletions(); Optional<CompletionItem> completion = completions.stream() .filter((item) -> item.getLabel().equals(expectLabel)) .findFirst(); if (completion.isPresent()) { return completion.get(); } fail("Not found '"+expectLabel+"' in "+ completions.stream().map(c -> c.getLabel()).collect(Collectors.toList())); return null; //unreachable but compiler doesn't know. }
private String getInsertText(CompletionItem completion) { String s = completion.getInsertText(); if (s==null) { //If no insertText is provided the label is used s = completion.getLabel(); } return s; }
public void assertNoCompletionsWithLabel(Predicate<String> labelPredicate) throws Exception { List<String> found = getCompletions().stream() .map(c -> c.getLabel()) .filter(labelPredicate) .collect(Collectors.toList()); if (!found.isEmpty()) { fail("Found but not expected: "+found); } }
@Override public CompletableFuture<CompletionItem> resolveCompletionItem(CompletionItem unresolved) { log.info("Completion item resolve request received: {}", unresolved.getLabel()); return async.invoke(() -> { try { CompletionResolveHandler h = completionResolveHandler; if (h!=null) { log.info("Completion item resolve request starting {}", unresolved.getLabel()); return h.handle(unresolved); } } finally { log.info("Completion item resolve request terminated."); } return null; }); }
public synchronized void resolveNow(CompletionItem unresolved) { Object id = unresolved.getData(); if (id!=null) { Consumer<CompletionItem> resolver = resolvers.get(id instanceof JsonPrimitive ? ((JsonPrimitive)id).getAsString() : id); if (resolver!=null) { resolver.accept(unresolved); unresolved.setData(null); //No longer needed after item is resolved. } else { log.warn("Couldn't resolve completion item. Did it already get flushed from the resolver's cache? "+unresolved.getLabel()); } } }
public List<CompletionItem> assertCompletionLabels(Predicate<CompletionItem> isInteresting, String... expectedLabels) throws Exception { StringBuilder expect = new StringBuilder(); StringBuilder actual = new StringBuilder(); for (String label : expectedLabels) { expect.append(label); expect.append("\n"); } List<CompletionItem> completions; for (CompletionItem completion : completions = getCompletions()) { if (isInteresting.test(completion)) { actual.append(completion.getLabel()); actual.append("\n"); } } assertEquals(expect.toString(), actual.toString()); return completions; }
/** * 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); String variableType = this.getVariableType(ctx); List<String> poppedTokens = ctx.get(CompletionKeys.FORCE_CONSUMED_TOKENS_KEY) .stream() .map(Token::getText) .collect(Collectors.toList()); if (poppedTokens.contains("=")) { completionItems.forEach(completionItem -> { if (completionItem.getDetail().equals(ItemResolverConstants.FUNCTION_TYPE)) { String label = completionItem.getLabel(); String functionReturnType = label.substring(label.lastIndexOf("(") + 1, label.lastIndexOf(")")); if (variableType.equals(functionReturnType)) { this.increasePriority(completionItem); } } }); } }
public void assertCompletionDisplayString(String editorContents, String expected) throws Exception { Editor editor = newEditor(editorContents); CompletionItem completion = editor.getFirstCompletion(); assertEquals(expected, completion.getLabel()); }
/** * 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()); } }); } }
private CompletionItem convertFromLsp(org.eclipse.lsp4j.CompletionItem lspItem) { CompletionItem item = new CompletionItem(lspItem.getLabel(), lspItem.getInsertText()); if (lspItem.getKind() != null) { item.type = lspItem.getKind().name().toLowerCase(); } return item; } }
completionItems.forEach(completionItem -> { if (completionItem.getDetail().equals(ItemResolverConstants.FUNCTION_TYPE)) { String label = completionItem.getLabel(); String[] returnTypes = label.substring(label.lastIndexOf("(") + 1, label.lastIndexOf(")")).split(","); if (returnTypes.length == 1 && returnTypes[0].equals(constraintType)) {