@Test public void testChangeEventUpdatesStoredText() throws Exception { CamelLanguageServer camelLanguageServer = initializeLanguageServer("<to uri=\"\" xmlns=\"http://camel.apache.org/schema/blueprint\"></to>\n"); DidChangeTextDocumentParams changeEvent = new DidChangeTextDocumentParams(); VersionedTextDocumentIdentifier textDocument = new VersionedTextDocumentIdentifier(); textDocument.setUri(DUMMY_URI); changeEvent.setTextDocument(textDocument); TextDocumentContentChangeEvent contentChange = new TextDocumentContentChangeEvent("<to xmlns=\"http://camel.apache.org/schema/blueprint\" uri=\"\"></to>\n"); changeEvent.setContentChanges(Collections.singletonList(contentChange)); camelLanguageServer.getTextDocumentService().didChange(changeEvent); //check old position doesn't provide completion CompletableFuture<Either<List<CompletionItem>, CompletionList>> completionsAtOldPosition = getCompletionFor(camelLanguageServer, new Position(0, 11)); assertThat(completionsAtOldPosition.get().getLeft()).isEmpty(); //check new position provides completion CompletableFuture<Either<List<CompletionItem>, CompletionList>> completionsAtNewPosition = getCompletionFor(camelLanguageServer, new Position(0, 58)); assertThat(completionsAtNewPosition.get().getLeft()).isNotEmpty(); }
private void changeDocument(ICompilationUnit cu, String content, int version, Range range, int length) throws JavaModelException { DidChangeTextDocumentParams changeParms = new DidChangeTextDocumentParams(); VersionedTextDocumentIdentifier textDocument = new VersionedTextDocumentIdentifier(); textDocument.setUri(JDTUtils.toURI(cu)); textDocument.setVersion(version); changeParms.setTextDocument(textDocument); TextDocumentContentChangeEvent event = new TextDocumentContentChangeEvent(); if (range != null) { event.setRange(range); event.setRangeLength(length); } event.setText(content); List<TextDocumentContentChangeEvent> contentChanges = new ArrayList<>(); contentChanges.add(event); changeParms.setContentChanges(contentChanges); lifeCycleHandler.didChange(changeParms); }
private void didChange(DidChangeTextDocumentParams didChangeTextDocumentParams) { try { String uri = prefixURI(didChangeTextDocumentParams.getTextDocument().getUri()); didChangeTextDocumentParams.getTextDocument().setUri(uri); didChangeTextDocumentParams.setUri(prefixURI(didChangeTextDocumentParams.getUri())); languageServerRegistry .getApplicableLanguageServers(uri) .stream() .flatMap(Collection::stream) .map(InitializedLanguageServer::getServer) .forEach( server -> { server.getTextDocumentService().didChange(didChangeTextDocumentParams); }); } catch (LanguageServerException e) { LOG.error("Error trying to process textDocument/didChange", e); } }
@Override public void syncTextDocument( Document document, TextPosition start, TextPosition end, String insertedText, int version) { DidChangeTextDocumentParams changeDTO = dtoFactory.createDto(DidChangeTextDocumentParams.class); String uri = document.getFile().getLocation().toString(); changeDTO.setUri(uri); VersionedTextDocumentIdentifier versionedDocId = dtoFactory.createDto(VersionedTextDocumentIdentifier.class); versionedDocId.setUri(uri); versionedDocId.setVersion(version); changeDTO.setTextDocument(versionedDocId); TextDocumentContentChangeEvent actualChange = dtoFactory.createDto(TextDocumentContentChangeEvent.class); actualChange.setText(document.getContents()); changeDTO.setContentChanges(Collections.singletonList(actualChange)); textDocumentService.didChange(changeDTO); }
@Override public void didChange(DidChangeTextDocumentParams params) { LOGGER.info("didChange: " + params.getTextDocument()); List<TextDocumentContentChangeEvent> contentChanges = params.getContentChanges(); TextDocumentItem textDocumentItem = openedDocuments.get(params.getTextDocument().getUri()); if (!contentChanges.isEmpty()) { textDocumentItem.setText(contentChanges.get(0).getText()); } }
public void didChange(DidChangeTextDocumentParams params) { try { ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() { @Override public void run(IProgressMonitor monitor) throws CoreException { handleChanged(params); } }, new NullProgressMonitor()); } catch (CoreException e) { JavaLanguageServerPlugin.logException("Handle document change ", e); } }
private void changeDocument(ICompilationUnit unit, String content, int version) throws JavaModelException { DidChangeTextDocumentParams changeParms = new DidChangeTextDocumentParams(); VersionedTextDocumentIdentifier textDocument = new VersionedTextDocumentIdentifier(); textDocument.setUri(JDTUtils.toURI(unit)); textDocument.setVersion(version); changeParms.setTextDocument(textDocument); TextDocumentContentChangeEvent event = new TextDocumentContentChangeEvent(); event.setText(content); List<TextDocumentContentChangeEvent> contentChanges = new ArrayList<>(); contentChanges.add(event); changeParms.setContentChanges(contentChanges); lifeCycleHandler.didChange(changeParms); }
@Override public void syncTextDocument( Document document, TextPosition startPosition, TextPosition endPosition, String insertedText, int version) { DidChangeTextDocumentParams changeDTO = dtoFactory.createDto(DidChangeTextDocumentParams.class); String uri = document.getFile().getLocation().toString(); changeDTO.setUri(uri); VersionedTextDocumentIdentifier versionedDocId = dtoFactory.createDto(VersionedTextDocumentIdentifier.class); versionedDocId.setUri(uri); versionedDocId.setVersion(version); changeDTO.setTextDocument(versionedDocId); Range range = dtoFactory.createDto(Range.class); Position start = dtoFactory.createDto(Position.class); start.setLine(startPosition.getLine()); start.setCharacter(startPosition.getCharacter()); Position end = dtoFactory.createDto(Position.class); end.setLine(endPosition.getLine()); end.setCharacter(endPosition.getCharacter()); range.setStart(start); range.setEnd(end); TextDocumentContentChangeEvent actualChange = dtoFactory.createDto(TextDocumentContentChangeEvent.class); actualChange.setRange(range); actualChange.setText(insertedText); changeDTO.setContentChanges(Collections.singletonList(actualChange)); textDocumentService.didChange(changeDTO); }
@Override public void didChange(final DidChangeTextDocumentParams params) { validateTextDocument(params.getTextDocument().getUri(), params.getContentChanges()); }
@Override public void didChange(DidChangeTextDocumentParams params) { logInfo(">> document/didChange"); documentLifeCycleHandler.didChange(params); }
@Override public void didChange(DidChangeTextDocumentParams params) { throw new UnsupportedOperationException(); }
@Override public void didChange(DidChangeTextDocumentParams params) {}
@PostConstruct public void configureMethods() { dtoToDtoList( "definition", TextDocumentPositionParams.class, LocationDto.class, this::definition); dtoToDtoList("codeAction", CodeActionParams.class, CommandDto.class, this::codeAction); dtoToDtoList( "documentSymbol", DocumentSymbolParams.class, SymbolInformationDto.class, this::documentSymbol); dtoToDtoList("formatting", DocumentFormattingParams.class, TextEditDto.class, this::formatting); dtoToDtoList( "rangeFormatting", DocumentRangeFormattingParams.class, TextEditDto.class, this::rangeFormatting); dtoToDtoList("references", ReferenceParams.class, LocationDto.class, this::references); dtoToDtoList( "onTypeFormatting", DocumentOnTypeFormattingParams.class, TextEditDto.class, this::onTypeFormatting); dtoToDto( "completionItem/resolve", ExtendedCompletionItem.class, ExtendedCompletionItemDto.class, this::completionItemResolve); dtoToDto( "documentHighlight", TextDocumentPositionParams.class, DocumentHighlight.class, this::documentHighlight); dtoToDto( "completion", TextDocumentPositionParams.class, ExtendedCompletionListDto.class, this::completion); dtoToDto("hover", TextDocumentPositionParams.class, HoverDto.class, this::hover); dtoToDto( "signatureHelp", TextDocumentPositionParams.class, SignatureHelpDto.class, this::signatureHelp); dtoToDto("rename", RenameParams.class, RenameResultDto.class, this::rename); dtoToNothing("didChange", DidChangeTextDocumentParams.class, this::didChange); dtoToNothing("didClose", DidCloseTextDocumentParams.class, this::didClose); dtoToNothing("didOpen", DidOpenTextDocumentParams.class, this::didOpen); dtoToNothing("didSave", DidSaveTextDocumentParams.class, this::didSave); }
/** * The document change notification is sent from the client to the server to * signal changes to a text document. * * Registration Options: TextDocumentChangeRegistrationOptions */ @JsonNotification void didChange(DidChangeTextDocumentParams params);
/** * GWT client implementation of {@link TextDocumentService#didChange(DidChangeTextDocumentParams)} * * @param params * @return */ public void didChange(DidChangeTextDocumentParams params) { transmitDtoAndReceiveNothing(params, "textDocument/didChange"); }