Java Code Examples for org.eclipse.lsp4j.TextDocumentSyncKind#Incremental
The following examples show how to use
org.eclipse.lsp4j.TextDocumentSyncKind#Incremental .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DocumentContentSynchronizer.java From intellij-quarkus with Eclipse Public License 2.0 | 5 votes |
@Override public void beforeDocumentChange(DocumentEvent event) { checkEvent(event); if (syncKind == TextDocumentSyncKind.Incremental) { // this really needs to happen before event gets actually // applied, to properly compute positions createChangeEvent(event); } }
Example 2
Source File: EditorEventManager.java From lsp4intellij with Apache License 2.0 | 4 votes |
public void documentChanged(DocumentEvent event) { if (editor.isDisposed()) { return; } if (event.getDocument() == editor.getDocument()) { //Todo - restore when adding hover support // long predTime = System.nanoTime(); //So that there are no hover events while typing changesParams.getTextDocument().setVersion(version++); if (syncKind == TextDocumentSyncKind.Incremental) { TextDocumentContentChangeEvent changeEvent = changesParams.getContentChanges().get(0); CharSequence newText = event.getNewFragment(); int offset = event.getOffset(); int newTextLength = event.getNewLength(); Position lspPosition = DocumentUtils.offsetToLSPPos(editor, offset); int startLine = lspPosition.getLine(); int startColumn = lspPosition.getCharacter(); CharSequence oldText = event.getOldFragment(); //if text was deleted/replaced, calculate the end position of inserted/deleted text int endLine, endColumn; if (oldText.length() > 0) { endLine = startLine + StringUtil.countNewLines(oldText); String[] oldLines = oldText.toString().split("\n"); int oldTextLength = oldLines.length == 0 ? 0 : oldLines[oldLines.length - 1].length(); endColumn = oldLines.length == 1 ? startColumn + oldTextLength : oldTextLength; } else { //if insert or no text change, the end position is the same endLine = startLine; endColumn = startColumn; } Range range = new Range(new Position(startLine, startColumn), new Position(endLine, endColumn)); changeEvent.setRange(range); changeEvent.setRangeLength(newTextLength); changeEvent.setText(newText.toString()); } else if (syncKind == TextDocumentSyncKind.Full) { changesParams.getContentChanges().get(0).setText(editor.getDocument().getText()); } requestManager.didChange(changesParams); } else { LOG.error("Wrong document for the EditorEventManager"); } }