public synchronized TextDocument get(TextDocumentPositionParams params) { return get(params.getTextDocument().getUri()); }
@Override public CompletableFuture<List<? extends Location>> start(ExtendedLanguageServer element) { TextDocumentPositionParams clonedTextDocumentPositionParams = lsParamsCloner.clone(textDocumentPositionParams); if (wsPath.startsWith(ROOT)) { URI uri = languageServerPathTransformer.toFsURI(element.getId(), wsPath); clonedTextDocumentPositionParams.getTextDocument().setUri(uri.toString()); } else { clonedTextDocumentPositionParams.getTextDocument().setUri(wsPath); } return element.getTextDocumentService().definition(clonedTextDocumentPositionParams); }
@ConditionalOnBean(DefinitionHandler.class) @Bean InitializingBean registerDefintionHandler(SimpleTextDocumentService documents, List<DefinitionHandler> definitionHandlers) { if (definitionHandlers.size() == 1) { return () -> documents.onDefinition(definitionHandlers.get(0)); } else { Map<LanguageId, DefinitionHandler> handlers = new HashMap<>(definitionHandlers.size()); for (DefinitionHandler h : definitionHandlers) { Assert.isInstanceOf(LanguageSpecific.class, h, "Only language specific defintion handlers supported!"); for (LanguageId l : ((LanguageSpecific)h).supportedLanguages()) { Assert.isTrue(!handlers.containsKey(l), "Multiple definition handlers for the same language not supported!"); handlers.put(l, h); } } ImmutableMap<LanguageId, DefinitionHandler> immutableMap = ImmutableMap.copyOf(handlers); return () -> documents.onDefinition((position) -> { TextDocument doc = documents.get(position.getTextDocument().getUri()); if (doc != null) { LanguageId language = doc.getLanguageId(); DefinitionHandler handler = immutableMap.get(language); if (handler != null) { return handler.handle(position); } } return ImmutableList.of(); }); } }
public List<? extends Location> definition(TextDocumentPositionParams position, IProgressMonitor monitor) { ITypeRoot unit = JDTUtils.resolveTypeRoot(position.getTextDocument().getUri()); Location location = null; if (unit != null && !monitor.isCanceled()) { location = computeDefinitionNavigation(unit, position.getPosition().getLine(), position.getPosition().getCharacter(), monitor); } return location == null ? null : Arrays.asList(location); }
public List<? extends Location> typeDefinition(TextDocumentPositionParams position, IProgressMonitor monitor) { ITypeRoot unit = JDTUtils.resolveTypeRoot(position.getTextDocument().getUri()); Location location = null; if (unit != null && !monitor.isCanceled()) { location = computeTypeDefinitionNavigation(unit, position.getPosition().getLine(), position.getPosition().getCharacter(), monitor); } return location == null ? null : Arrays.asList(location); }
@Override public CompletableFuture<List<? extends Location>> definition(TextDocumentPositionParams position) { URI uri = Uris.resolveToRoot(getWorkspacePath(), position.getTextDocument().getUri()); return CompletableFuture.completedFuture(getState().getCompilerWrapper() .gotoDefinition(uri, position.getPosition()).transform(Lists::newArrayList).or(Lists.newArrayList())); }
@Override public CompletableFuture<Hover> start(ExtendedLanguageServer element) { TextDocumentPositionParams clonedPositionParams = lsParamsCloner.clone(positionParams); URI uri = languageServerPathTransformer.toFsURI(element.getId(), wsPath); clonedPositionParams.getTextDocument().setUri(uri.toString()); return element.getTextDocumentService().hover(clonedPositionParams); }
@Override public CompletableFuture<SignatureHelp> start(ExtendedLanguageServer element) { TextDocumentPositionParams clonedPositionParams = lsParamsCloner.clone(positionParams); URI uri = languageServerPathTransformer.toFsURI(element.getId(), wsPath); clonedPositionParams.getTextDocument().setUri(uri.toString()); return element.getTextDocumentService().signatureHelp(clonedPositionParams); }
private SignatureHelpDto signatureHelp(TextDocumentPositionParams positionParams) { String wsPath = positionParams.getTextDocument().getUri(); SignatureHelpDto[] result = new SignatureHelpDto[1]; Set<ExtendedLanguageServer> servers = findServer.byPath(wsPath); LSOperation<ExtendedLanguageServer, SignatureHelp> op = new LSOperation<ExtendedLanguageServer, SignatureHelp>() { @Override public boolean canDo(ExtendedLanguageServer element) { return element.getCapabilities().getSignatureHelpProvider() != null; } @Override public CompletableFuture<SignatureHelp> start(ExtendedLanguageServer element) { TextDocumentPositionParams clonedPositionParams = lsParamsCloner.clone(positionParams); URI uri = languageServerPathTransformer.toFsURI(element.getId(), wsPath); clonedPositionParams.getTextDocument().setUri(uri.toString()); return element.getTextDocumentService().signatureHelp(clonedPositionParams); } @Override public boolean handleResult(ExtendedLanguageServer element, SignatureHelp res) { if (res != null && !res.getSignatures().isEmpty()) { result[0] = new SignatureHelpDto(res); return true; } return false; } }; OperationUtil.doInSequence(servers, op, 10000); return result[0]; }
public Hover hover(TextDocumentPositionParams position, IProgressMonitor monitor) { ITypeRoot unit = JDTUtils.resolveTypeRoot(position.getTextDocument().getUri()); List<Either<String, MarkedString>> content = null; if (unit != null && !monitor.isCanceled()) { content = computeHover(unit, position.getPosition().getLine(), position.getPosition().getCharacter(), monitor); } else { content = Collections.singletonList(Either.forLeft("")); } Hover $ = new Hover(); $.setContents(content); return $; }
@Override public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completion( TextDocumentPositionParams position) { return CompletableFuture.completedFuture(Either.forRight( getState().getCompilerWrapper() .getCompletion( Uris.resolveToRoot(getWorkspacePath(), position.getTextDocument().getUri()), position.getPosition()))); }
TextDocumentPositionParams clone(TextDocumentPositionParams textDocumentPositionParams) { if (textDocumentPositionParams == null) { return null; } Position position = textDocumentPositionParams.getPosition(); TextDocumentIdentifier textDocument = textDocumentPositionParams.getTextDocument(); TextDocumentPositionParams cloned = new TextDocumentPositionParams(); cloned.setPosition(clone(position)); cloned.setTextDocument(clone(textDocument)); return cloned; }
public List<? extends DocumentHighlight> documentHighlight(TextDocumentPositionParams position, IProgressMonitor monitor) { ITypeRoot type = JDTUtils.resolveTypeRoot(position.getTextDocument().getUri()); return computeOccurrences(type, position.getPosition().getLine(), position.getPosition().getCharacter(), monitor); }
protected List<? extends Location> definition(final CancelIndicator cancelIndicator, final TextDocumentPositionParams params) { final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); final IResourceServiceProvider resourceServiceProvider = this.languagesRegistry.getResourceServiceProvider(uri); DocumentSymbolService _get = null; if (resourceServiceProvider!=null) { _get=resourceServiceProvider.<DocumentSymbolService>get(DocumentSymbolService.class); } final DocumentSymbolService documentSymbolService = _get; if ((documentSymbolService == null)) { return CollectionLiterals.<Location>emptyList(); } final Function2<Document, XtextResource, List<? extends Location>> _function = (Document document, XtextResource resource) -> { return documentSymbolService.getDefinitions(document, resource, params, this.resourceAccess, cancelIndicator); }; return this.workspaceManager.<List<? extends Location>>doRead(uri, _function); }
@Override public CompletableFuture<Hover> hover(final TextDocumentPositionParams params) { final Function1<CancelIndicator, Hover> _function = (CancelIndicator cancelIndicator) -> { final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); final IResourceServiceProvider resourceServiceProvider = this.languagesRegistry.getResourceServiceProvider(uri); IHoverService _get = null; if (resourceServiceProvider!=null) { _get=resourceServiceProvider.<IHoverService>get(IHoverService.class); } final IHoverService hoverService = _get; if ((hoverService == null)) { return IHoverService.EMPTY_HOVER; } final Function2<Document, XtextResource, Hover> _function_1 = (Document document, XtextResource resource) -> { return hoverService.hover(document, resource, params, cancelIndicator); }; return this.workspaceManager.<Hover>doRead(uri, _function_1); }; return this.requestManager.<Hover>runRead(_function); }
public TextDocumentPositionParamsDto(org.eclipse.lsp4j.TextDocumentPositionParams o) { if (o.getPosition() == null) { setPosition((org.eclipse.lsp4j.Position)null); } else { org.eclipse.lsp4j.Position positionVal = new PositionDto(o.getPosition()); setPosition((org.eclipse.lsp4j.Position)positionVal); } if (o.getUri() == null) { setUri((java.lang.String)null); } else { java.lang.String uriVal = (java.lang.String)makeDto(o.getUri());; setUri((java.lang.String)uriVal); } if (o.getTextDocument() == null) { setTextDocument((org.eclipse.lsp4j.TextDocumentIdentifier)null); } else { org.eclipse.lsp4j.TextDocumentIdentifier textDocumentVal = new TextDocumentIdentifierDto(o.getTextDocument()); setTextDocument((org.eclipse.lsp4j.TextDocumentIdentifier)textDocumentVal); } }
@Override public CompletableFuture<SignatureHelp> signatureHelp(final TextDocumentPositionParams params) { final Function1<CancelIndicator, SignatureHelp> _function = (CancelIndicator cancelIndicator) -> { final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); final IResourceServiceProvider serviceProvider = this.languagesRegistry.getResourceServiceProvider(uri); ISignatureHelpService _get = null; if (serviceProvider!=null) { _get=serviceProvider.<ISignatureHelpService>get(ISignatureHelpService.class); } final ISignatureHelpService helper = _get; if ((helper == null)) { return ISignatureHelpService.EMPTY; } final Function2<Document, XtextResource, SignatureHelp> _function_1 = (Document doc, XtextResource resource) -> { return helper.getSignatureHelp(doc, resource, params, cancelIndicator); }; return this.workspaceManager.<SignatureHelp>doRead(uri, _function_1); }; return this.requestManager.<SignatureHelp>runRead(_function); }
@Override public CompletableFuture<List<? extends DocumentHighlight>> documentHighlight(final TextDocumentPositionParams params) { final Function1<CancelIndicator, List<? extends DocumentHighlight>> _function = (CancelIndicator cancelIndicator) -> { final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); final IResourceServiceProvider serviceProvider = this.languagesRegistry.getResourceServiceProvider(uri); IDocumentHighlightService _get = null; if (serviceProvider!=null) { _get=serviceProvider.<IDocumentHighlightService>get(IDocumentHighlightService.class); } final IDocumentHighlightService service = _get; if ((service == null)) { return CollectionLiterals.<DocumentHighlight>emptyList(); } final Function2<Document, XtextResource, List<? extends DocumentHighlight>> _function_1 = (Document doc, XtextResource resource) -> { return service.getDocumentHighlights(doc, resource, params, cancelIndicator); }; return this.workspaceManager.<List<? extends DocumentHighlight>>doRead(uri, _function_1); }; return this.requestManager.<List<? extends DocumentHighlight>>runRead(_function); }
public List<? extends Location> findImplementations(TextDocumentPositionParams param, IProgressMonitor monitor) { List<Location> locations = null; IJavaElement elementToSearch = null; try { ITypeRoot typeRoot = JDTUtils.resolveTypeRoot(param.getTextDocument().getUri()); if (typeRoot != null) { elementToSearch = JDTUtils.findElementAtSelection(typeRoot, param.getPosition().getLine(), param.getPosition().getCharacter(), this.preferenceManager, monitor); } if (elementToSearch == null) { return Collections.emptyList(); } int offset = getOffset(param, typeRoot); IRegion region = new Region(offset, 0); IType primaryType = typeRoot.findPrimaryType(); //java.lang.Object is a special case. We need to minimize heavy cost of I/O, // by avoiding opening all files from the Object hierarchy boolean useDefaultLocation = primaryType == null ? false : "java.lang.Object".equals(primaryType.getFullyQualifiedName()); ImplementationToLocationMapper mapper = new ImplementationToLocationMapper(preferenceManager.isClientSupportsClassFileContent(), useDefaultLocation); ImplementationCollector<Location> collector = new ImplementationCollector<>(region, elementToSearch, mapper); locations = collector.findImplementations(monitor); } catch (CoreException e) { JavaLanguageServerPlugin.logException("Find implementations failure ", e); } return locations; }
/** * Get the physical source location of the given package. * * @param bLangNode ballerina language node references are requested for * @param ownerPackageName list of name compositions of the node's package name * @param currentPackageName list of name compositions of the current package * @return location of the package of the given node */ private Location getLocation(BLangNode bLangNode, String ownerPackageName, String currentPackageName) { Location l = new Location(); Range r = new Range(); TextDocumentPositionParams position = this.context.get(DocumentServiceKeys.POSITION_KEY); String parentPath = new LSDocument(position.getTextDocument().getUri()).getSourceRoot(); if (parentPath != null) { String fileName = bLangNode.getPosition().getSource().getCompilationUnitName(); Path filePath = Paths.get(CommonUtil.getPackageURI(currentPackageName, parentPath, ownerPackageName), fileName); l.setUri(filePath.toUri().toString()); // Subtract 1 to convert the token lines and char positions to zero based indexing r.setStart(new Position(bLangNode.getPosition().getStartLine() - 1, bLangNode.getPosition().getStartColumn() - 1)); r.setEnd(new Position(bLangNode.getPosition().getEndLine() - 1, bLangNode.getPosition().getEndColumn() - 1)); l.setRange(r); } return l; }