From 4a648555ed7a61de615baad551bab8f34a5bad74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Thu, 8 Oct 2020 14:21:03 +0900 Subject: [PATCH] Don't try to compose zero-width deletes. --- helix-core/src/transaction.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/helix-core/src/transaction.rs b/helix-core/src/transaction.rs index 86fc0bc8..a84313b2 100644 --- a/helix-core/src/transaction.rs +++ b/helix-core/src/transaction.rs @@ -439,7 +439,9 @@ impl Transaction { } acc.push(Operation::Insert(text)); } - None => acc.push(Operation::Delete(span)), + None if span > 0 => acc.push(Operation::Delete(span)), + // empty delete is useless + None => (), } last = to; } @@ -577,7 +579,8 @@ mod test { let mut state = State::new("hello world!\ntest 123".into()); let transaction = Transaction::change( &state, - vec![(6, 11, Some("void".into())), (12, 17, None)].into_iter(), + // (1, 1, None) is a useless 0-width delete + vec![(6, 11, Some("void".into())), (12, 17, None), (1, 1, None)].into_iter(), ); transaction.apply(&mut state); assert_eq!(state.doc, Rope::from_str("hello void! 123"));