aboutsummaryrefslogtreecommitdiff
path: root/helix-view
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-09-06 02:00:33 +0000
committerBlaž Hrastnik2021-09-06 02:00:33 +0000
commit57ed5180e0e1af3b3ddcb478c4a6d6ecd969cd40 (patch)
tree1a946e4bb1a406c8d5366cfee418948f1922e34e /helix-view
parent08967baef62772177bba95f99990e69094735a2b (diff)
lsp: Improve line ending handling when generating TextEdit
Diffstat (limited to 'helix-view')
-rw-r--r--helix-view/src/document.rs34
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");