From c00f5acd93e935a8e8d39931aa6b106ab18259d9 Mon Sep 17 00:00:00 2001 From: Cole Miller Date: Thu, 5 Mar 2026 10:04:43 -0500 Subject: [PATCH] fix seeds 15 and 16 Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> --- crates/multi_buffer/src/path_key.rs | 34 +++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/crates/multi_buffer/src/path_key.rs b/crates/multi_buffer/src/path_key.rs index 51fe56420af3d1f87307158d840c0dd088193306..5bcfa9a6c7bd881b9e3acc970950825db1fb768a 100644 --- a/crates/multi_buffer/src/path_key.rs +++ b/crates/multi_buffer/src/path_key.rs @@ -409,7 +409,7 @@ impl MultiBuffer { next_excerpt.clone(), to_insert.peek().is_some() || cursor - .item() + .next_item() .is_some_and(|item| item.path_key_index != path_key_index), ), (), @@ -431,7 +431,11 @@ impl MultiBuffer { new_excerpts.update_last( |excerpt| { if excerpt.has_trailing_newline { - before -= 1; + before.0.0 = before + .0 + .0 + .checked_sub(1) + .expect("should have preceding excerpt"); excerpt.has_trailing_newline = false; } }, @@ -539,7 +543,7 @@ impl MultiBuffer { .cursor::>(()); let mut new_excerpts = SumTree::new(()); new_excerpts.append(cursor.slice(&path, Bias::Left), ()); - let edit_start = cursor.position.1; + let mut edit_start = cursor.position.1; let mut buffer_id = None; if let Some(excerpt) = cursor.item() && excerpt.path_key == path @@ -552,11 +556,6 @@ impl MultiBuffer { let changed_trailing_excerpt = suffix.is_empty(); new_excerpts.append(suffix, ()); - let edit = Edit { - old: edit_start..edit_end, - new: edit_start..edit_start, - }; - if let Some(buffer_id) = buffer_id { snapshot.buffers.remove(&buffer_id); self.buffers.remove(&buffer_id); @@ -567,8 +566,25 @@ impl MultiBuffer { drop(cursor); if changed_trailing_excerpt { snapshot.trailing_excerpt_update_count += 1; - new_excerpts.update_last(|excerpt| excerpt.has_trailing_newline = false, ()) + new_excerpts.update_last( + |excerpt| { + if excerpt.has_trailing_newline { + excerpt.has_trailing_newline = false; + edit_start.0.0 = edit_start + .0 + .0 + .checked_sub(1) + .expect("should have at least one excerpt"); + } + }, + (), + ) } + + let edit = Edit { + old: edit_start..edit_end, + new: edit_start..edit_start, + }; snapshot.excerpts = new_excerpts; let edits =