@@ -891,6 +891,40 @@ impl Default for Document {
891891mod test {
892892 use super::*;
893893
894+ #[test]
895+ fn changeset_to_changes_ignore_line_endings() {
896+ use helix_lsp::{lsp, Client, OffsetEncoding};
897+ let text = Rope::from("hello\r\nworld");
898+ let mut doc = Document::from(text, None);
899+ let view = ViewId::default();
900+ doc.set_selection(view, Selection::single(0, 0));
901+
902+ let transaction =
903+ Transaction::change(doc.text(), vec![(5, 7, Some("\n".into()))].into_iter());
904+ let old_doc = doc.text().clone();
905+ doc.apply(&transaction, view);
906+ let changes = Client::changeset_to_changes(
907+ &old_doc,
908+ doc.text(),
909+ transaction.changes(),
910+ OffsetEncoding::Utf8,
911+ );
912+
913+ assert_eq!(doc.text(), "hello\nworld");
914+
915+ assert_eq!(
916+ changes,
917+ &[lsp::TextDocumentContentChangeEvent {
918+ range: Some(lsp::Range::new(
919+ lsp::Position::new(0, 5),
920+ lsp::Position::new(1, 0)
921+ )),
922+ text: "\n".into(),
923+ range_length: None,
924+ }]
925+ );
926+ }
927+
894928 #[test]
895929 fn changeset_to_changes() {
896930 use helix_lsp::{lsp, Client, OffsetEncoding};