diff --git a/crates/editor/src/display_map/wrap_map.rs b/crates/editor/src/display_map/wrap_map.rs index 0495343815acc528f380a65d00996dc4df15b29e..d5c51c61b4cb96038a5227a846ca1466fc5fd268 100644 --- a/crates/editor/src/display_map/wrap_map.rs +++ b/crates/editor/src/display_map/wrap_map.rs @@ -1024,7 +1024,7 @@ impl Iterator for WrapRows<'_> { multibuffer_row: None, diff_status, expand_info: None, - wrapped: buffer_row.buffer_row, + wrapped_buffer_row: buffer_row.buffer_row, } } else { buffer_row diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 18d0491204a4d3e80a38c2afb60a88ad0634dcdf..822f592eb96930cfc0b216e8d1a25a0d40b279aa 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -3170,7 +3170,7 @@ impl EditorElement { let mut i = head_idx + 1; let should_count_line = |row_info: &RowInfo| { if use_display_offset { - row_info.buffer_row.is_some() || row_info.wrapped.is_some() + row_info.buffer_row.is_some() || row_info.wrapped_buffer_row.is_some() } else { row_info.buffer_row.is_some() } @@ -3267,7 +3267,7 @@ impl EditorElement { let display_row = DisplayRow(rows.start.0 + ix as u32); line_number.clear(); let non_relative_number = if use_relative_for_wrapped_lines { - row_info.buffer_row.or(row_info.wrapped)? + 1 + row_info.buffer_row.or(row_info.wrapped_buffer_row)? + 1 } else { row_info.buffer_row? + 1 }; @@ -3333,7 +3333,7 @@ impl EditorElement { line_numbers .entry(buffer_row) .or_insert_with(|| LineNumberLayout { - segments: Vec::new(), + segments: Default::default(), }) .segments .push(segment); @@ -9825,13 +9825,15 @@ impl EditorLayout { } } +#[derive(Debug)] struct LineNumberSegment { shaped_line: ShapedLine, hitbox: Option, } +#[derive(Debug)] struct LineNumberLayout { - segments: Vec, + segments: SmallVec<[LineNumberSegment; 1]>, } struct ColoredRange { @@ -10996,7 +10998,7 @@ mod tests { ) }) .unwrap(); - assert_eq!(layouts.len(), 6); + assert_eq!(layouts.len(), 3); let relative_rows = window .update(cx, |editor, window, cx| { @@ -11009,7 +11011,7 @@ mod tests { ) }) .unwrap(); - dbg!(&relative_rows); + assert_eq!(relative_rows[&DisplayRow(0)], 3); assert_eq!(relative_rows[&DisplayRow(1)], 2); assert_eq!(relative_rows[&DisplayRow(2)], 1); @@ -11131,7 +11133,13 @@ mod tests { state .line_numbers .get(&MultiBufferRow(0)) - .map(|line_number| line_number.shaped_line.text.as_ref()), + .map(|line_number| line_number + .segments + .first() + .unwrap() + .shaped_line + .text + .as_ref()), Some("1") ); } diff --git a/crates/multi_buffer/src/multi_buffer.rs b/crates/multi_buffer/src/multi_buffer.rs index c94c43308b20b08105f7e02d6a1d5ce61f66cd7c..9d473bb95d5165bda1481b63c40dc0c472aa0e9f 100644 --- a/crates/multi_buffer/src/multi_buffer.rs +++ b/crates/multi_buffer/src/multi_buffer.rs @@ -395,7 +395,7 @@ pub struct RowInfo { pub multibuffer_row: Option, pub diff_status: Option, pub expand_info: Option, - pub wrapped: Option, + pub wrapped_buffer_row: Option, } /// A slice into a [`Buffer`] that is being edited in a [`MultiBuffer`]. @@ -7498,7 +7498,7 @@ impl Iterator for MultiBufferRows<'_> { multibuffer_row: Some(MultiBufferRow(0)), diff_status: None, expand_info: None, - wrapped: None, + wrapped_buffer_row: None, }); } @@ -7556,7 +7556,7 @@ impl Iterator for MultiBufferRows<'_> { buffer_row: Some(last_row), multibuffer_row: Some(multibuffer_row), diff_status: None, - wrapped: None, + wrapped_buffer_row: None, expand_info, }); } else { @@ -7601,7 +7601,7 @@ impl Iterator for MultiBufferRows<'_> { .diff_hunk_status .filter(|_| self.point < region.range.end), expand_info, - wrapped: None, + wrapped_buffer_row: None, }); self.point += Point::new(1, 0); result diff --git a/crates/multi_buffer/src/multi_buffer_tests.rs b/crates/multi_buffer/src/multi_buffer_tests.rs index 02622478ed42e26e4f93f6b9616a430292388cda..32ec965c049bc8d438bca3cd7d93774e44b0d9bb 100644 --- a/crates/multi_buffer/src/multi_buffer_tests.rs +++ b/crates/multi_buffer/src/multi_buffer_tests.rs @@ -31,7 +31,7 @@ fn test_empty_singleton(cx: &mut App) { multibuffer_row: Some(MultiBufferRow(0)), diff_status: None, expand_info: None, - wrapped: None, + wrapped_buffer_row: None, }] ); } @@ -2432,7 +2432,7 @@ impl ReferenceMultibuffer { buffer_id: region.buffer_id, diff_status: region.status, buffer_row, - wrapped: None, + wrapped_buffer_row: None, multibuffer_row: Some(MultiBufferRow( text[..ix].matches('\n').count() as u32