Use fold points to go to display map's prev/next line boundary
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
This commit is contained in:
parent
bb9ade5b6f
commit
429a9cddae
1 changed files with 6 additions and 2 deletions
|
@ -321,7 +321,9 @@ impl DisplaySnapshot {
|
||||||
pub fn prev_line_boundary(&self, mut point: Point) -> (Point, DisplayPoint) {
|
pub fn prev_line_boundary(&self, mut point: Point) -> (Point, DisplayPoint) {
|
||||||
loop {
|
loop {
|
||||||
let mut inlay_point = self.inlay_snapshot.to_inlay_point(point);
|
let mut inlay_point = self.inlay_snapshot.to_inlay_point(point);
|
||||||
inlay_point.0.column = 0;
|
let mut fold_point = self.fold_snapshot.to_fold_point(inlay_point, Bias::Left);
|
||||||
|
fold_point.0.column = 0;
|
||||||
|
inlay_point = fold_point.to_inlay_point(&self.fold_snapshot);
|
||||||
point = self.inlay_snapshot.to_buffer_point(inlay_point);
|
point = self.inlay_snapshot.to_buffer_point(inlay_point);
|
||||||
|
|
||||||
let mut display_point = self.point_to_display_point(point, Bias::Left);
|
let mut display_point = self.point_to_display_point(point, Bias::Left);
|
||||||
|
@ -337,7 +339,9 @@ impl DisplaySnapshot {
|
||||||
pub fn next_line_boundary(&self, mut point: Point) -> (Point, DisplayPoint) {
|
pub fn next_line_boundary(&self, mut point: Point) -> (Point, DisplayPoint) {
|
||||||
loop {
|
loop {
|
||||||
let mut inlay_point = self.inlay_snapshot.to_inlay_point(point);
|
let mut inlay_point = self.inlay_snapshot.to_inlay_point(point);
|
||||||
inlay_point.0.column = self.inlay_snapshot.line_len(inlay_point.row());
|
let mut fold_point = self.fold_snapshot.to_fold_point(inlay_point, Bias::Right);
|
||||||
|
fold_point.0.column = self.fold_snapshot.line_len(fold_point.row());
|
||||||
|
inlay_point = fold_point.to_inlay_point(&self.fold_snapshot);
|
||||||
point = self.inlay_snapshot.to_buffer_point(inlay_point);
|
point = self.inlay_snapshot.to_buffer_point(inlay_point);
|
||||||
|
|
||||||
let mut display_point = self.point_to_display_point(point, Bias::Right);
|
let mut display_point = self.point_to_display_point(point, Bias::Right);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue