From 51162ae6b2f57a38b5878670bf6524b24b5604e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Mon, 28 Jun 2021 18:05:20 +0900
Subject: [PATCH] fix ca98210d2016d96d1c441932d7a67bbc6e5eccb7

---
 helix-core/src/transaction.rs | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/helix-core/src/transaction.rs b/helix-core/src/transaction.rs
index d55e2e9c..10219142 100644
--- a/helix-core/src/transaction.rs
+++ b/helix-core/src/transaction.rs
@@ -163,7 +163,7 @@ impl ChangeSet {
                     head_a = a;
                     head_b = changes_b.next();
                 }
-                (None, _) | (_, None) => return unreachable!(),
+                (None, val) | (val, None) => return unreachable!("({:?})", val),
                 (Some(Retain(i)), Some(Retain(j))) => match i.cmp(&j) {
                     Ordering::Less => {
                         changes.retain(i);
@@ -195,7 +195,7 @@ impl ChangeSet {
                         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();
+                            let (pos, _) = s.char_indices().nth(j).unwrap();
                             s.pop_front(pos as u32);
                             head_a = Some(Insert(s));
                             head_b = changes_b.next();
@@ -599,7 +599,7 @@ mod test {
         };
 
         let b = ChangeSet {
-            changes: vec![Delete(10), Insert("world".into()), Retain(5)],
+            changes: vec![Delete(10), Insert("世orld".into()), Retain(5)],
             len: 15,
             len_after: 10,
         };
@@ -610,7 +610,7 @@ mod test {
         let composed = a.compose(b);
         assert_eq!(composed.len, 8);
         assert!(composed.apply(&mut text));
-        assert_eq!(text, "world! abc");
+        assert_eq!(text, "世orld! abc");
     }
 
     #[test]