diff options
author | Blaž Hrastnik | 2021-09-06 02:00:33 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-09-06 02:00:33 +0000 |
commit | 57ed5180e0e1af3b3ddcb478c4a6d6ecd969cd40 (patch) | |
tree | 1a946e4bb1a406c8d5366cfee418948f1922e34e /helix-view | |
parent | 08967baef62772177bba95f99990e69094735a2b (diff) |
lsp: Improve line ending handling when generating TextEdit
Diffstat (limited to 'helix-view')
-rw-r--r-- | helix-view/src/document.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs index e890a336..b2c02927 100644 --- a/helix-view/src/document.rs +++ b/helix-view/src/document.rs @@ -892,6 +892,40 @@ mod test { use super::*; #[test] + fn changeset_to_changes_ignore_line_endings() { + use helix_lsp::{lsp, Client, OffsetEncoding}; + let text = Rope::from("hello\r\nworld"); + let mut doc = Document::from(text, None); + let view = ViewId::default(); + doc.set_selection(view, Selection::single(0, 0)); + + let transaction = + Transaction::change(doc.text(), vec![(5, 7, Some("\n".into()))].into_iter()); + let old_doc = doc.text().clone(); + doc.apply(&transaction, view); + let changes = Client::changeset_to_changes( + &old_doc, + doc.text(), + transaction.changes(), + OffsetEncoding::Utf8, + ); + + assert_eq!(doc.text(), "hello\nworld"); + + assert_eq!( + changes, + &[lsp::TextDocumentContentChangeEvent { + range: Some(lsp::Range::new( + lsp::Position::new(0, 5), + lsp::Position::new(1, 0) + )), + text: "\n".into(), + range_length: None, + }] + ); + } + + #[test] fn changeset_to_changes() { use helix_lsp::{lsp, Client, OffsetEncoding}; let text = Rope::from("hello"); |