summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/clever_f/direct_preview_planner.lua5
-rw-r--r--tests/run.lua34
2 files changed, 31 insertions, 8 deletions
diff --git a/lua/clever_f/direct_preview_planner.lua b/lua/clever_f/direct_preview_planner.lua
index 7ead43f..bc9592a 100644
--- a/lua/clever_f/direct_preview_planner.lua
+++ b/lua/clever_f/direct_preview_planner.lua
@@ -34,9 +34,10 @@ function DirectPreviewPlanner:scan_current_line(view, origin, direction)
origin = domain.Position.coerce(origin)
direction = domain.Direction.from_string(direction)
local records = {}
- for position, character, span in view:iterate(
+ for position, character, span in view:iter_strict(
+ origin,
direction,
- view:line_match_start_bounds(origin.line)
+ domain.SearchScope.CURRENT_LINE
) do
records[#records + 1] = {
position = position,
diff --git a/tests/run.lua b/tests/run.lua
index e16f082..b7a4820 100644
--- a/tests/run.lua
+++ b/tests/run.lua
@@ -4548,14 +4548,36 @@ test("Direct preview scanning stays on the cursor line", function()
local records = planner:scan_current_line(
view,
- domain.Position.new(2, 2),
+ domain.Position.new(2, 1),
domain.Direction.FORWARD
)
- same(2, #records)
- same(domain.Position.new(2, 1), records[1].position)
- same("d", records[1].character)
- same(domain.Position.new(2, 2), records[2].position)
- same("e", records[2].character)
+ same(1, #records)
+ same(domain.Position.new(2, 2), records[1].position)
+ same("e", records[1].character)
+end)
+
+test("Direct preview scanning excludes the cursor and opposite side", function()
+ local view = text_topology.new({ "abcde" }, "utf-8")
+ local planner = direct_preview_planner.new()
+ local origin = domain.Position.new(1, 3)
+
+ local forward = planner:scan_current_line(
+ view,
+ origin,
+ domain.Direction.FORWARD
+ )
+ same(2, #forward)
+ same(domain.Position.new(1, 4), forward[1].position)
+ same(domain.Position.new(1, 5), forward[2].position)
+
+ local backward = planner:scan_current_line(
+ view,
+ origin,
+ domain.Direction.BACKWARD
+ )
+ same(2, #backward)
+ same(domain.Position.new(1, 2), backward[1].position)
+ same(domain.Position.new(1, 1), backward[2].position)
end)
for _, item in ipairs(tests) do