From 2a5d7ea2dea1eeb7ddfbe343c25d0784678ba6e7 Mon Sep 17 00:00:00 2001 From: Julia Date: Mon, 17 Oct 2022 13:11:11 -0400 Subject: [PATCH] Inclusively check for hunk in fold range --- crates/editor/src/element.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index e5a9f8f756..3da4753510 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -1022,7 +1022,14 @@ impl EditorElement { for hunk in hunks { let hunk_start_point = Point::new(hunk.buffer_range.start, 0); let hunk_end_point = Point::new(hunk.buffer_range.end, 0); - let hunk_moved_start_point = Point::new(hunk.buffer_range.start.saturating_sub(1), 0); + let hunk_start_point_sub = Point::new(hunk.buffer_range.start.saturating_sub(1), 0); + let hunk_end_point_sub = Point::new( + hunk.buffer_range + .end + .saturating_sub(1) + .max(hunk.buffer_range.start), + 0, + ); let is_removal = hunk.status() == DiffHunkStatus::Removed; @@ -1032,12 +1039,13 @@ impl EditorElement { let containing_fold = snapshot.folds_in_range(folds_range).find(|fold_range| { let fold_point_range = fold_range.to_point(buffer_snapshot); + let fold_point_range = fold_point_range.start..=fold_point_range.end; let folded_start = fold_point_range.contains(&hunk_start_point); - let folded_end = fold_point_range.contains(&hunk_end_point); - let folded_moved_start = fold_point_range.contains(&hunk_moved_start_point); + let folded_end = fold_point_range.contains(&hunk_end_point_sub); + let folded_start_sub = fold_point_range.contains(&hunk_start_point_sub); - (folded_start && folded_end) || (is_removal && folded_moved_start) + (folded_start && folded_end) || (is_removal && folded_start_sub) }); let visual_range = if let Some(fold) = containing_fold {