@@ -1020,11 +1020,11 @@ impl Iterator for WrapRows<'_> {
Some(if soft_wrapped {
RowInfo {
buffer_id: None,
- buffer_row: buffer_row.buffer_row,
+ buffer_row: None,
multibuffer_row: None,
diff_status,
expand_info: None,
- wrapped: true,
+ wrapped: buffer_row.buffer_row,
}
} else {
buffer_row
@@ -3170,9 +3170,9 @@ 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.buffer_row.is_some() || row_info.wrapped.is_some()
} else {
- row_info.buffer_row.is_some() && !row_info.wrapped
+ row_info.buffer_row.is_some()
}
};
while i < buffer_rows.len() as u32 {
@@ -3266,8 +3266,8 @@ impl EditorElement {
let segments = buffer_rows.iter().enumerate().flat_map(|(ix, row_info)| {
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.wrapped {
- return None;
+ let non_relative_number = if use_relative_for_wrapped_lines {
+ row_info.buffer_row.or(row_info.wrapped)? + 1
} else {
row_info.buffer_row? + 1
};
@@ -395,7 +395,7 @@ pub struct RowInfo {
pub multibuffer_row: Option<MultiBufferRow>,
pub diff_status: Option<buffer_diff::DiffHunkStatus>,
pub expand_info: Option<ExpandInfo>,
- pub wrapped: bool,
+ pub wrapped: Option<u32>,
}
/// 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: false,
+ wrapped: None,
});
}
@@ -7556,7 +7556,7 @@ impl Iterator for MultiBufferRows<'_> {
buffer_row: Some(last_row),
multibuffer_row: Some(multibuffer_row),
diff_status: None,
- wrapped: false,
+ wrapped: None,
expand_info,
});
} else {
@@ -7601,7 +7601,7 @@ impl Iterator for MultiBufferRows<'_> {
.diff_hunk_status
.filter(|_| self.point < region.range.end),
expand_info,
- wrapped: false,
+ wrapped: None,
});
self.point += Point::new(1, 0);
result
@@ -31,6 +31,7 @@ fn test_empty_singleton(cx: &mut App) {
multibuffer_row: Some(MultiBufferRow(0)),
diff_status: None,
expand_info: None,
+ wrapped: None,
}]
);
}
@@ -2431,6 +2432,8 @@ impl ReferenceMultibuffer {
buffer_id: region.buffer_id,
diff_status: region.status,
buffer_row,
+ wrapped: None,
+
multibuffer_row: Some(MultiBufferRow(
text[..ix].matches('\n').count() as u32
)),