From 55ca085d7d55efd9c9d487a05d60baacbbccdef9 Mon Sep 17 00:00:00 2001 From: Julia Date: Wed, 23 Nov 2022 13:52:18 -0500 Subject: [PATCH] Consistency in prefix/suffix/signature of UTF16 point to point conversion Co-Authored-By: Max Brunsfeld --- crates/rope/src/rope.rs | 16 ++++++++-------- crates/text/src/text.rs | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/crates/rope/src/rope.rs b/crates/rope/src/rope.rs index af74b08743..2a1268eab9 100644 --- a/crates/rope/src/rope.rs +++ b/crates/rope/src/rope.rs @@ -351,16 +351,16 @@ impl Rope { .map_or(0, |chunk| chunk.point_utf16_to_offset(overshoot, clip)) } - pub fn point_utf16_to_point_clipped(&self, point: PointUtf16) -> Point { - if point >= self.summary().lines_utf16() { + pub fn unclipped_point_utf16_to_point(&self, point: Unclipped) -> Point { + if point.0 >= self.summary().lines_utf16() { return self.summary().lines; } let mut cursor = self.chunks.cursor::<(PointUtf16, Point)>(); - cursor.seek(&point, Bias::Left, &()); - let overshoot = point - cursor.start().0; + cursor.seek(&point.0, Bias::Left, &()); + let overshoot = Unclipped(point.0 - cursor.start().0); cursor.start().1 + cursor.item().map_or(Point::zero(), |chunk| { - chunk.point_utf16_to_point_clipped(overshoot) + chunk.unclipped_point_utf16_to_point(overshoot) }) } @@ -830,16 +830,16 @@ impl Chunk { offset } - fn point_utf16_to_point_clipped(&self, target: PointUtf16) -> Point { + fn unclipped_point_utf16_to_point(&self, target: Unclipped) -> Point { let mut point = Point::zero(); let mut point_utf16 = PointUtf16::zero(); for ch in self.0.chars() { - if point_utf16 == target { + if point_utf16 == target.0 { break; } - if point_utf16 > target { + if point_utf16 > target.0 { // If the point is past the end of a line or inside of a code point, // return the last valid point before the target. return point; diff --git a/crates/text/src/text.rs b/crates/text/src/text.rs index aa4ef109cd..7e486d231e 100644 --- a/crates/text/src/text.rs +++ b/crates/text/src/text.rs @@ -1598,8 +1598,8 @@ impl BufferSnapshot { self.visible_text.unclipped_point_utf16_to_offset(point) } - pub fn point_utf16_to_point_clipped(&self, point: PointUtf16) -> Point { - self.visible_text.point_utf16_to_point_clipped(point) + pub fn unclipped_point_utf16_to_point(&self, point: Unclipped) -> Point { + self.visible_text.unclipped_point_utf16_to_point(point) } pub fn offset_utf16_to_offset(&self, offset: OffsetUtf16) -> usize { @@ -2421,7 +2421,7 @@ impl ToPoint for Point { impl ToPoint for Unclipped { fn to_point<'a>(&self, snapshot: &BufferSnapshot) -> Point { - snapshot.point_utf16_to_point_clipped(self.0) + snapshot.unclipped_point_utf16_to_point(*self) } }