diff --git a/crates/editor/src/display_map/block_map.rs b/crates/editor/src/display_map/block_map.rs index 26aa2e193b..e41afffe3c 100644 --- a/crates/editor/src/display_map/block_map.rs +++ b/crates/editor/src/display_map/block_map.rs @@ -528,16 +528,14 @@ impl BlockSnapshot { pub fn longest_row(&self) -> u32 { let input_row = self.wrap_snapshot.longest_row(); - let input_row_len = self.wrap_snapshot.line_len(input_row); + let input_row_chars = self.wrap_snapshot.line_char_count(input_row); let TransformSummary { longest_row_in_block: block_row, - longest_row_in_block_chars: block_row_len, + longest_row_in_block_chars: block_row_chars, .. } = &self.transforms.summary(); - dbg!(block_row, block_row_len, input_row, input_row_len); - - if *block_row_len > input_row_len { + if *block_row_chars > input_row_chars { *block_row } else { self.to_block_point(WrapPoint::new(input_row, 0)).row diff --git a/crates/editor/src/display_map/wrap_map.rs b/crates/editor/src/display_map/wrap_map.rs index 6e14df4dbb..a30101a003 100644 --- a/crates/editor/src/display_map/wrap_map.rs +++ b/crates/editor/src/display_map/wrap_map.rs @@ -674,6 +674,13 @@ impl Snapshot { len as u32 } + pub fn line_char_count(&self, row: u32) -> u32 { + self.text_chunks(row) + .flat_map(|c| c.chars()) + .take_while(|c| *c != '\n') + .count() as u32 + } + pub fn soft_wrap_indent(&self, row: u32) -> Option { let mut cursor = self.transforms.cursor::(); cursor.seek(&WrapPoint::new(row + 1, 0), Bias::Right, &());