diff --git a/crates/editor/src/display_map.rs b/crates/editor/src/display_map.rs index 342ef90b38..faf770cb1b 100644 --- a/crates/editor/src/display_map.rs +++ b/crates/editor/src/display_map.rs @@ -199,7 +199,10 @@ impl DisplaySnapshot { pub fn prev_line_boundary(&self, mut point: Point) -> (Point, DisplayPoint) { loop { - point.column = 0; + let mut fold_point = point.to_fold_point(&self.folds_snapshot, Bias::Left); + *fold_point.column_mut() = 0; + point = fold_point.to_buffer_point(&self.folds_snapshot); + let mut display_point = self.point_to_display_point(point, Bias::Left); *display_point.column_mut() = 0; let next_point = self.display_point_to_point(display_point, Bias::Left); @@ -212,7 +215,10 @@ impl DisplaySnapshot { pub fn next_line_boundary(&self, mut point: Point) -> (Point, DisplayPoint) { loop { - point.column = self.buffer_snapshot.line_len(point.row); + let mut fold_point = point.to_fold_point(&self.folds_snapshot, Bias::Right); + *fold_point.column_mut() = self.folds_snapshot.line_len(fold_point.row()); + point = fold_point.to_buffer_point(&self.folds_snapshot); + let mut display_point = self.point_to_display_point(point, Bias::Right); *display_point.column_mut() = self.line_len(display_point.row()); let next_point = self.display_point_to_point(display_point, Bias::Right); diff --git a/crates/editor/src/display_map/fold_map.rs b/crates/editor/src/display_map/fold_map.rs index 60dd40c853..fd5f1de8f8 100644 --- a/crates/editor/src/display_map/fold_map.rs +++ b/crates/editor/src/display_map/fold_map.rs @@ -37,7 +37,6 @@ impl FoldPoint { &mut self.0.row } - #[cfg(test)] pub fn column_mut(&mut self) -> &mut u32 { &mut self.0.column } @@ -549,7 +548,6 @@ impl FoldSnapshot { FoldOffset(self.transforms.summary().output.bytes) } - #[cfg(test)] pub fn line_len(&self, row: u32) -> u32 { let line_start = FoldPoint::new(row, 0).to_offset(self).0; let line_end = if row >= self.max_point().row() {