From 198f6694b78ff53b6d424dc14b433290fc8cdff5 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 17 Nov 2021 19:30:40 +0100 Subject: [PATCH] Use options to represent soft-wrapped buffer rows Co-Authored-By: Nathan Sobo Co-Authored-By: Max Brunsfeld --- crates/editor/src/display_map/wrap_map.rs | 6 +++--- crates/editor/src/element.rs | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/editor/src/display_map/wrap_map.rs b/crates/editor/src/display_map/wrap_map.rs index 6076bd69380c2b6f0429244c1fc255f0216029f3..e337dc7bbf69f6622dbc4ebb482c79212e0b394b 100644 --- a/crates/editor/src/display_map/wrap_map.rs +++ b/crates/editor/src/display_map/wrap_map.rs @@ -702,7 +702,7 @@ impl Snapshot { prev_tab_row = tab_point.row(); soft_wrapped = false; } - expected_buffer_rows.push((buffer_row, soft_wrapped)); + expected_buffer_rows.push(if soft_wrapped { None } else { Some(buffer_row) }); } for start_display_row in 0..expected_buffer_rows.len() { @@ -782,7 +782,7 @@ impl<'a> Iterator for Chunks<'a> { } impl<'a> Iterator for BufferRows<'a> { - type Item = (u32, bool); + type Item = Option; fn next(&mut self) -> Option { if self.output_row > self.max_output_row { @@ -802,7 +802,7 @@ impl<'a> Iterator for BufferRows<'a> { self.soft_wrapped = true; } - Some((buffer_row, soft_wrapped)) + Some(if soft_wrapped { None } else { Some(buffer_row) }) } } diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 1e0e512ffdf135773c3b4c9f7558e674ed43b06b..966396840875ed362556c12443747c44f02e4e24 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -411,7 +411,7 @@ impl EditorElement { let style = &self.settings.style; let mut layouts = Vec::with_capacity(rows.len()); let mut line_number = String::new(); - for (ix, (buffer_row, soft_wrapped)) in snapshot + for (ix, buffer_row) in snapshot .buffer_rows(rows.start) .take((rows.end - rows.start) as usize) .enumerate() @@ -422,9 +422,7 @@ impl EditorElement { } else { style.line_number }; - if soft_wrapped { - layouts.push(None); - } else { + if let Some(buffer_row) = buffer_row { line_number.clear(); write!(&mut line_number, "{}", buffer_row + 1).unwrap(); layouts.push(Some(cx.text_layout_cache.layout_str( @@ -439,6 +437,8 @@ impl EditorElement { }, )], ))); + } else { + layouts.push(None); } }