Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 9 additions & 14 deletions crates/editor/src/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27677,7 +27677,6 @@ impl EditorSnapshot {
) -> HashMap<DisplayRow, u32> {
let initial_offset =
self.relative_line_delta(current_selection_head, rows.start, count_wrapped_lines);
let current_selection_point = current_selection_head.as_display_point().to_point(self);

self.row_infos(rows.start)
.take(rows.len())
Expand All @@ -27688,23 +27687,19 @@ impl EditorSnapshot {
|| (count_wrapped_lines && row_info.wrapped_buffer_row.is_some())
})
.enumerate()
.filter(|(_, (row, row_info))| {
// We want to check here that
// - the row is not the current selection head to ensure the current
// line has absolute numbering
// - similarly, should the selection head live in a soft-wrapped line
// and we are not counting those, that the parent line keeps its
// absolute number
// - lastly, if we are in a deleted line, it is fine to number this
.filter_map(|(i, (row, row_info))| {
// We want to ensure here that the current line has absolute
// numbering, even if we are in a soft-wrapped line. With the
// exception that if we are in a deleted line, we should number this
// relative with 0, as otherwise it would have no line number at all
(*row != current_selection_head
&& (count_wrapped_lines
|| row_info.buffer_row != Some(current_selection_point.row)))
let relative_line_number = (initial_offset + i as i64).unsigned_abs() as u32;

(relative_line_number != 0
|| row_info
.diff_status
.is_some_and(|status| status.is_deleted())
.is_some_and(|status| status.is_deleted()))
.then_some((row, relative_line_number))
})
.map(|(i, (row, _))| (row, (initial_offset + i as i64).unsigned_abs() as u32))
.collect()
}
}
Expand Down
1 change: 1 addition & 0 deletions crates/editor/src/editor_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29572,6 +29572,7 @@ fn test_relative_line_numbers(cx: &mut TestAppContext) {
.into_iter()
.enumerate()
.map(|(i, row)| (DisplayRow(row), i.abs_diff(base_row) as u32))
.filter(|(_, relative_line_number)| *relative_line_number != 0)
.collect_vec();
let actual_relative_numbers = snapshot
.calculate_relative_line_numbers(
Expand Down