From 657d8234fbc769d69cad785f3e0863597796c5f1 Mon Sep 17 00:00:00 2001 From: tauraamui Date: Fri, 15 Aug 2025 17:21:31 +0100 Subject: [PATCH 1/3] feat(buffer): method to acquire difference in distance between positions --- src/lib/buffer/position.v | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/lib/buffer/position.v b/src/lib/buffer/position.v index 68f3fd29..5c4264e6 100644 --- a/src/lib/buffer/position.v +++ b/src/lib/buffer/position.v @@ -37,6 +37,13 @@ pub fn (p Position) add(d Distance) Position { } } +pub fn (a Position) distance(b Position) Distance { + return Distance{ + lines: if a < b { b.line - a.line } else { a.line - b.line } + offset: if a < b { b.offset - a.offset } else { a.offset - b.offset } + } +} + pub fn (mut p Position) apply(d Distance) { p = p.add(d) } From 5cf265fa87766392fba063ee12940a324d457d3d Mon Sep 17 00:00:00 2001 From: tauraamui Date: Fri, 15 Aug 2025 17:21:58 +0100 Subject: [PATCH 2/3] test(buffer): check distance twixt pos resolves work correctly --- src/lib/buffer/position_test.v | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/lib/buffer/position_test.v b/src/lib/buffer/position_test.v index 3884a8ca..395bcdd4 100644 --- a/src/lib/buffer/position_test.v +++ b/src/lib/buffer/position_test.v @@ -144,3 +144,33 @@ fn test_compare_works_when_lines_and_offsets_are_not_equal() { assert position_a != position_b } + +fn test_distance_between_a_lines_larger() { + position_a := Position{ + line: 11 + offset: 3 + } + position_b := Position{ + line: 8 + offset: 3 + } + + assert position_a.distance(position_b) == Distance{ lines: 3 } + assert position_b.distance(position_a) == Distance{ lines: 3 } +} + +fn test_distance_between_b_lines_larger() { + position_a := Position{ + line: 11 + offset: 3 + } + position_b := Position{ + line: 85 + offset: 9 + } + + assert position_a.distance(position_b) == Distance{ lines: 74, offset: 6 } + assert position_b.distance(position_a) == Distance{ lines: 74, offset: 6 } +} + + From b07a95b4c37fae6f72ff992e02a383729958f2d8 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:22:54 +0000 Subject: [PATCH 3/3] style: auto-format V code in src/ --- src/lib/buffer/position.v | 2 +- src/lib/buffer/position_test.v | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/lib/buffer/position.v b/src/lib/buffer/position.v index 5c4264e6..2200775a 100644 --- a/src/lib/buffer/position.v +++ b/src/lib/buffer/position.v @@ -39,7 +39,7 @@ pub fn (p Position) add(d Distance) Position { pub fn (a Position) distance(b Position) Distance { return Distance{ - lines: if a < b { b.line - a.line } else { a.line - b.line } + lines: if a < b { b.line - a.line } else { a.line - b.line } offset: if a < b { b.offset - a.offset } else { a.offset - b.offset } } } diff --git a/src/lib/buffer/position_test.v b/src/lib/buffer/position_test.v index 395bcdd4..6992dc14 100644 --- a/src/lib/buffer/position_test.v +++ b/src/lib/buffer/position_test.v @@ -155,8 +155,12 @@ fn test_distance_between_a_lines_larger() { offset: 3 } - assert position_a.distance(position_b) == Distance{ lines: 3 } - assert position_b.distance(position_a) == Distance{ lines: 3 } + assert position_a.distance(position_b) == Distance{ + lines: 3 + } + assert position_b.distance(position_a) == Distance{ + lines: 3 + } } fn test_distance_between_b_lines_larger() { @@ -169,8 +173,12 @@ fn test_distance_between_b_lines_larger() { offset: 9 } - assert position_a.distance(position_b) == Distance{ lines: 74, offset: 6 } - assert position_b.distance(position_a) == Distance{ lines: 74, offset: 6 } + assert position_a.distance(position_b) == Distance{ + lines: 74 + offset: 6 + } + assert position_b.distance(position_a) == Distance{ + lines: 74 + offset: 6 + } } - -