From ee78d6f17b1eb679eb9dd667a44dea1e1b53f987 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 28 Oct 2021 13:40:08 +0200 Subject: [PATCH] Express multi-cursor edits using the new coordinate space The language server expects that ranges further in the list of edits account for the impact of prior changes in the edit list. --- crates/language/src/lib.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/language/src/lib.rs b/crates/language/src/lib.rs index 3547c65a3fe35000d89828cd8ed7d4840162a734..5e5a27e35a7bbc476f681a7b68875b7d29b9c71b 100644 --- a/crates/language/src/lib.rs +++ b/crates/language/src/lib.rs @@ -363,16 +363,18 @@ impl Buffer { prev_snapshot.buffer_snapshot.version().clone(), ) .map(|edit| { + // TODO: Use UTF-16 positions. + let edit_start = edit.new_lines.start; + let edit_end = edit_start + edit.deleted_lines(); lsp::TextDocumentContentChangeEvent { - // TODO: Use UTF-16 positions. range: Some(lsp::Range::new( lsp::Position::new( - edit.old_lines.start.row, - edit.old_lines.start.column, + edit_start.row, + edit_start.column, ), lsp::Position::new( - edit.old_lines.end.row, - edit.old_lines.end.column, + edit_end.row, + edit_end.column, ), )), range_length: None,