Fix invalid anchors in breadcrumbs (#38687)

Release Notes:

- (nightly only) Fix panic when your cursor abuts a multibyte character
This commit is contained in:
Conrad Irwin
2025-09-23 02:38:12 +00:00
committed by GitHub
parent 681a4adc42
commit 98865a3ff2
3 changed files with 25 additions and 18 deletions
+7 -13
View File
@@ -6156,8 +6156,9 @@ impl MultiBufferSnapshot {
let anchor = self.anchor_before(offset);
let excerpt_id = anchor.excerpt_id;
let excerpt = self.excerpt(excerpt_id)?;
let buffer_id = excerpt.buffer_id;
Some((
excerpt.buffer_id,
buffer_id,
excerpt
.buffer
.symbols_containing(anchor.text_anchor, theme)
@@ -6165,22 +6166,15 @@ impl MultiBufferSnapshot {
.flat_map(|item| {
Some(OutlineItem {
depth: item.depth,
range: self.anchor_in_excerpt(excerpt_id, item.range.start)?
..self.anchor_in_excerpt(excerpt_id, item.range.end)?,
range: Anchor::range_in_buffer(excerpt_id, buffer_id, item.range),
text: item.text,
highlight_ranges: item.highlight_ranges,
name_ranges: item.name_ranges,
body_range: item.body_range.and_then(|body_range| {
Some(
self.anchor_in_excerpt(excerpt_id, body_range.start)?
..self.anchor_in_excerpt(excerpt_id, body_range.end)?,
)
body_range: item.body_range.map(|body_range| {
Anchor::range_in_buffer(excerpt_id, buffer_id, body_range)
}),
annotation_range: item.annotation_range.and_then(|body_range| {
Some(
self.anchor_in_excerpt(excerpt_id, body_range.start)?
..self.anchor_in_excerpt(excerpt_id, body_range.end)?,
)
annotation_range: item.annotation_range.map(|body_range| {
Anchor::range_in_buffer(excerpt_id, buffer_id, body_range)
}),
})
})