From ca98210d2016d96d1c441932d7a67bbc6e5eccb7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Mon, 28 Jun 2021 17:47:23 +0900
Subject: [PATCH] fix: insert() | delete() would calculate the new insert
 incorrectly

Refs #386
---
 helix-core/src/transaction.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/helix-core/src/transaction.rs b/helix-core/src/transaction.rs
index 49ac396d..d55e2e9c 100644
--- a/helix-core/src/transaction.rs
+++ b/helix-core/src/transaction.rs
@@ -193,9 +193,10 @@ impl ChangeSet {
                             head_b = changes_b.next();
                         }
                         Ordering::Greater => {
+                            // TODO: cover this with a test
                             // figure out the byte index of the truncated string end
                             let (pos, _) = s.char_indices().nth(len - j).unwrap();
-                            s.pop_front(s.len() as u32 - pos as u32);
+                            s.pop_front(pos as u32);
                             head_a = Some(Insert(s));
                             head_b = changes_b.next();
                         }