summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/clever_f/feedback_service.lua6
-rw-r--r--tests/run.lua24
2 files changed, 29 insertions, 1 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua
index b9735ee..39ae527 100644
--- a/lua/clever_f/feedback_service.lua
+++ b/lua/clever_f/feedback_service.lua
@@ -466,7 +466,11 @@ function FeedbackService:request_persistent(specification)
})
request.group = "CleverFChar"
request.priority = M.overlay_priority("CleverFChar")
- record.transitions:AddTargetOverlay(request.identity, request.window)
+ record.transitions:AddTargetOverlay(
+ request.identity,
+ request.window,
+ request.anchor.line
+ )
local requests = record.persistent_requests
requests[#requests + 1] = request
return request
diff --git a/tests/run.lua b/tests/run.lua
index 03e1c2d..2b54ff1 100644
--- a/tests/run.lua
+++ b/tests/run.lua
@@ -6045,6 +6045,30 @@ test("Operator acquisition keeps feedback temporary", function()
same(0, map_size(host:highlights()))
end)
+test("Persistent feedback stores overlay identity and anchor", function()
+ local state, transitions = fresh_sequence_state()
+ local host = MemoryHost.new({ buffer_lines = { "x", "axa" } })
+ local feedback = feedback_service.new({
+ host = host,
+ transitions = transitions,
+ })
+ local shared_target = target_plan.build(target("a"), matching_policy())
+ local movement = motion_plan.build(shared_target, "f")
+ local persistent = feedback:request_persistent({
+ context = "n",
+ anchor = domain.Position.new(2, 2),
+ target_plan = shared_target,
+ motion_plan = movement,
+ window = "window-anchor",
+ })
+ local resource = state.target_overlays[1]
+
+ same(persistent.identity, resource.identity)
+ same("window-anchor", resource.window)
+ same("CleverFChar", resource.group)
+ same(2, resource.anchor_line)
+end)
+
for _, item in ipairs(tests) do
local ok, failure = xpcall(item.body, debug.traceback)
if not ok then