From 9cd297621ac1be4585412cba9637fbb88b88c6fd Mon Sep 17 00:00:00 2001 From: dino Date: Fri, 31 Oct 2025 18:13:28 +0000 Subject: [PATCH] chore(vim): update find_mini_delimiters to use buffer range This doesn't yet fix the user's issue, as it appears to not correctly be copying the content inside the brackets, but it does appear to prevent it from crashing as we're now converting the multibuffer's ranges to buffer ranges. --- crates/vim/src/object.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/vim/src/object.rs b/crates/vim/src/object.rs index 5d0ac722872f3c39067a668c4ed5d56847c61898..fd81146a83c21107c83a026a60143a711ce75e5e 100644 --- a/crates/vim/src/object.rs +++ b/crates/vim/src/object.rs @@ -214,7 +214,7 @@ fn find_mini_delimiters( let visible_line_range = get_visible_line_range(&line_range); let snapshot = &map.buffer_snapshot(); - let excerpt = snapshot.excerpt_containing(offset..offset)?; + let mut excerpt = snapshot.excerpt_containing(offset..offset)?; let buffer = excerpt.buffer(); let bracket_filter = |open: Range, close: Range| { @@ -222,7 +222,17 @@ fn find_mini_delimiters( }; // Try to find delimiters in visible range first - let ranges = map.buffer_snapshot().bracket_ranges(visible_line_range); + let ranges = map + .buffer_snapshot() + .bracket_ranges(visible_line_range) + .map(|ranges| { + ranges.map(|(open, close)| { + ( + excerpt.map_range_to_buffer(open), + excerpt.map_range_to_buffer(close), + ) + }) + }); if let Some(candidate) = cover_or_next(ranges, display_point, map, Some(&bracket_filter)) { return Some( DelimiterRange {