diff --git a/crates/multi_buffer/src/multi_buffer.rs b/crates/multi_buffer/src/multi_buffer.rs index 9daaec8d749c6e929210060b0f00e5f63ae39b72..f57777d73cb30f3f1c9c0ad1b317412d49ff4a3a 100644 --- a/crates/multi_buffer/src/multi_buffer.rs +++ b/crates/multi_buffer/src/multi_buffer.rs @@ -656,6 +656,7 @@ struct DiffTransformHunkInfo { hunk_start_anchor: text::Anchor, hunk_secondary_status: DiffHunkSecondaryStatus, is_logically_deleted: bool, + excerpt_end: ExcerptAnchor, } impl Eq for DiffTransformHunkInfo {} @@ -788,9 +789,7 @@ impl ExcerptRange { #[derive(Clone, Debug)] pub struct ExcerptSummary { path_key: PathKey, - /// End of the excerpt - max_anchor: text::Anchor, - buffer_id: BufferId, + max_anchor: Anchor, widest_line_number: u32, text: MBTextSummary, count: usize, @@ -800,7 +799,7 @@ impl ExcerptSummary { pub fn min() -> Self { ExcerptSummary { path_key: PathKey::min(), - max_anchor: text::Anchor::MIN, + max_anchor: Anchor::Min, widest_line_number: 0, text: MBTextSummary::default(), count: 0, @@ -1064,6 +1063,7 @@ struct MultiBufferRegion<'a, MBD, BD> { struct ExcerptChunks<'a> { content_chunks: BufferChunks<'a>, + end: ExcerptAnchor, has_footer: bool, } @@ -6800,7 +6800,7 @@ where && self .excerpts .item() - .is_some_and(|excerpt| excerpt.id != hunk_info.excerpt_id) + .is_some_and(|excerpt| excerpt.end_anchor() != hunk_info.excerpt_end) { self.excerpts.next(); } @@ -6866,7 +6866,7 @@ where DiffTransform::DeletedHunk { hunk_info, .. } => self .excerpts .item() - .is_some_and(|excerpt| excerpt.id != hunk_info.excerpt_id), + .is_some_and(|excerpt| excerpt.end_anchor() != hunk_info.excerpt_end), }) } @@ -7038,6 +7038,7 @@ impl Excerpt { ExcerptChunks { content_chunks, has_footer, + end: self.end_anchor(), } } @@ -7100,20 +7101,19 @@ impl PartialEq for Excerpt { } impl<'a> MultiBufferExcerpt<'a> { - pub fn id(&self) -> ExcerptId { - self.excerpt.id - } - pub fn buffer_id(&self) -> BufferId { - self.excerpt.buffer_id + self.excerpt.buffer.remote_id() } pub fn start_anchor(&self) -> Anchor { - Anchor::text(self.excerpt.id, self.excerpt.range.context.start) + Anchor::in_buffer( + self.excerpt.path_key_index, + self.excerpt.range.context.start, + ) } pub fn end_anchor(&self) -> Anchor { - Anchor::text(self.excerpt.id, self.excerpt.range.context.end) + Anchor::in_buffer(self.excerpt.path_key_index, self.excerpt.range.context.end) } pub fn buffer(&self) -> &'a BufferSnapshot { @@ -7754,7 +7754,7 @@ impl<'a> MultiBufferChunks<'a> { if let Some(excerpt_chunks) = self .excerpt_chunks .as_mut() - .filter(|chunks| excerpt.id == chunks.excerpt_id) + .filter(|chunks| excerpt.end_anchor() == chunks.end) { excerpt.seek_chunks( excerpt_chunks,