on master help sign in
fix: lsp: Sort edits by start range, Omnisharp sends them in reverse
3d91c99Blaž Hrastnik
helix-lsp/src/lib.rs+5−1
@@ -173,9 +173,13 @@ pub mod util {
173
173
174 pub fn generate_transaction_from_edits(
174 pub fn generate_transaction_from_edits(
175 doc: &Rope,
175 doc: &Rope,
176− edits: Vec<lsp::TextEdit>,
176+ mut edits: Vec<lsp::TextEdit>,
177 offset_encoding: OffsetEncoding,
177 offset_encoding: OffsetEncoding,
178 ) -> Transaction {
178 ) -> Transaction {
179+ // Sort edits by start range, since some LSPs (Omnisharp) send them
180+ // in reverse order.
181+ edits.sort_unstable_by_key(|edit| edit.range.start);
182+
179 Transaction::change(
183 Transaction::change(
180 doc,
184 doc,
181 edits.into_iter().map(|edit| {
185 edits.into_iter().map(|edit| {