Change summary
crates/editor/src/display_map.rs | 20 ++++++++++++++++++--
crates/vim/src/object.rs | 4 ++--
2 files changed, 20 insertions(+), 4 deletions(-)
Detailed changes
@@ -1172,7 +1172,7 @@ impl Sub for DisplayPoint {
#[serde(transparent)]
pub struct DisplayRow(pub u32);
-impl Add for DisplayRow {
+impl Add<DisplayRow> 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<u32> for DisplayRow {
+ type Output = Self;
+
+ fn add(self, other: u32) -> Self::Output {
+ DisplayRow(self.0 + other)
+ }
+}
+
+impl Sub<DisplayRow> for DisplayRow {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
@@ -1188,6 +1196,14 @@ impl Sub for DisplayRow {
}
}
+impl Sub<u32> 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)))
@@ -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);
}
}