From 300bec9303eda3665b4706a37a0790bfde20569a Mon Sep 17 00:00:00 2001 From: Thomas Heartman Date: Wed, 1 Oct 2025 08:02:13 +0200 Subject: [PATCH] more fixes --- crates/editor/src/element.rs | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 8b7e829efebe2cf568163d7384e855a6f6812cae..d8f66e9c87dd2514afe50cccf6c12cefd00cd7f8 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -3168,13 +3168,15 @@ impl EditorElement { let head_idx = relative_to.minus(start); let mut delta = 1; let mut i = head_idx + 1; + let should_count_line = |row_info: &RowInfo| { + if use_display_offset { + row_info.buffer_row.is_some() + } else { + row_info.buffer_row.is_some() && !row_info.wrapped + } + }; while i < buffer_rows.len() as u32 { - if buffer_rows[i as usize].buffer_row.is_some() { - if rows.contains(&DisplayRow(i + start.0)) { - relative_rows.insert(DisplayRow(i + start.0), delta); - } - delta += 1; - } else if use_display_offset && buffer_rows[i as usize].wrapped { + if should_count_line(&buffer_rows[i as usize]) { if rows.contains(&DisplayRow(i + start.0)) { relative_rows.insert(DisplayRow(i + start.0), delta); } @@ -3190,12 +3192,7 @@ impl EditorElement { while i > 0 { i -= 1; - if buffer_rows[i as usize].buffer_row.is_some() { - if rows.contains(&DisplayRow(i + start.0)) { - relative_rows.insert(DisplayRow(i + start.0), delta); - } - delta += 1; - } else if use_display_offset && buffer_rows[i as usize].wrapped { + if should_count_line(&buffer_rows[i as usize]) { if rows.contains(&DisplayRow(i + start.0)) { relative_rows.insert(DisplayRow(i + start.0), delta); } @@ -3258,12 +3255,10 @@ 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 number = if let Some(relative_number) = relative_rows.get(&display_row) { - *relative_number - } else { - row_info.buffer_row? + 1 - }; - + let non_relative_number = row_info.buffer_row? + 1; + let number = relative_rows + .get(&display_row) + .unwrap_or(&non_relative_number); write!(&mut line_number, "{number}").unwrap(); if row_info .diff_status