From e0c66b30c85c7f846ee208391340ff5f4a3ac01a Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Mon, 4 Mar 2024 21:27:01 -0700 Subject: [PATCH] Fix panic in enclosing bracket ranges (#8870) This function was operating in the wrong co-ordinate space (c.f. #8081) Release Notes: - Fixed a panic on `ctrl-m` in a multibuffer --- crates/multi_buffer/src/multi_buffer.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/crates/multi_buffer/src/multi_buffer.rs b/crates/multi_buffer/src/multi_buffer.rs index 61af2d366c323054155408d6cfa6eacc96c797ec..60b8af4a532fbe770c93a3d1ffce50c495f443fc 100644 --- a/crates/multi_buffer/src/multi_buffer.rs +++ b/crates/multi_buffer/src/multi_buffer.rs @@ -195,7 +195,7 @@ struct Excerpt { /// /// Contains methods for getting the [`Buffer`] of the excerpt, /// as well as mapping offsets to/from buffer and multibuffer coordinates. -#[derive(Copy, Clone)] +#[derive(Clone)] pub struct MultiBufferExcerpt<'a> { excerpt: &'a Excerpt, excerpt_offset: usize, @@ -2963,7 +2963,16 @@ impl MultiBufferSnapshot { excerpt .buffer() .enclosing_bracket_ranges(excerpt.map_range_to_buffer(range)) - .filter(move |(open, close)| excerpt.contains_buffer_range(open.start..close.end)), + .filter_map(move |(open, close)| { + if excerpt.contains_buffer_range(open.start..close.end) { + Some(( + excerpt.map_range_from_buffer(open), + excerpt.map_range_from_buffer(close), + )) + } else { + None + } + }), ) }