chore(vim): update find_mini_delimiters to use buffer range
dino
created 3 weeks ago
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.
Change summary
crates/vim/src/object.rs | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
Detailed changes
@@ -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<usize>, close: Range<usize>| {
@@ -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 {