@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); }
@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()); } }
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); }
public DidChangeTextDocumentParams(@NonNull final VersionedTextDocumentIdentifier textDocument, @NonNull final List<TextDocumentContentChangeEvent> contentChanges) { this.textDocument = textDocument; this.contentChanges = contentChanges; }
@Deprecated public DidChangeTextDocumentParams(@NonNull final VersionedTextDocumentIdentifier textDocument, final String uri, @NonNull final List<TextDocumentContentChangeEvent> contentChanges) { this(textDocument, contentChanges); this.uri = uri; }
/** * The actual content changes. */ @Pure @NonNull public List<TextDocumentContentChangeEvent> getContentChanges() { return this.contentChanges; }
/** * The actual content changes. */ public void setContentChanges(@NonNull final List<TextDocumentContentChangeEvent> contentChanges) { this.contentChanges = contentChanges; }
private void validateTextDocument(final String documentUri, final List<? extends TextDocumentContentChangeEvent> list) { TextDocumentContentChangeEvent e = list.iterator().next(); parseDocument(documentUri, e.getText()); }