diff --git a/crates/editor/src/display_map.rs b/crates/editor/src/display_map.rs index ed616ac49a..1efb27ef7d 100644 --- a/crates/editor/src/display_map.rs +++ b/crates/editor/src/display_map.rs @@ -1172,7 +1172,7 @@ impl Sub for DisplayPoint { #[serde(transparent)] pub struct DisplayRow(pub u32); -impl Add for DisplayRow { +impl Add for DisplayRow { type Output = Self; fn add(self, other: Self) -> Self::Output { @@ -1180,7 +1180,15 @@ impl Add for DisplayRow { } } -impl Sub for DisplayRow { +impl Add for DisplayRow { + type Output = Self; + + fn add(self, other: u32) -> Self::Output { + DisplayRow(self.0 + other) + } +} + +impl Sub for DisplayRow { type Output = Self; fn sub(self, other: Self) -> Self::Output { @@ -1188,6 +1196,14 @@ impl Sub for DisplayRow { } } +impl Sub for DisplayRow { + type Output = Self; + + fn sub(self, other: u32) -> Self::Output { + DisplayRow(self.0 - other) + } +} + impl DisplayPoint { pub fn new(row: DisplayRow, column: u32) -> Self { Self(BlockPoint(Point::new(row.0, column))) diff --git a/crates/vim/src/object.rs b/crates/vim/src/object.rs index c73cee836e..502f00aa8d 100644 --- a/crates/vim/src/object.rs +++ b/crates/vim/src/object.rs @@ -738,11 +738,11 @@ fn paragraph( let paragraph_start_row = paragraph_start.row(); if paragraph_start_row.0 != 0 { let previous_paragraph_last_line_start = - Point::new(paragraph_start_row.0 - 1, 0).to_display_point(map); + DisplayPoint::new(paragraph_start_row - 1, 0); paragraph_start = start_of_paragraph(map, previous_paragraph_last_line_start); } } else { - let next_paragraph_start = Point::new(paragraph_end_row.0 + 1, 0).to_display_point(map); + let next_paragraph_start = DisplayPoint::new(paragraph_end_row + 1, 0); paragraph_end = end_of_paragraph(map, next_paragraph_start); } }