summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackson Moore <jacksonmoore@tuta.io>2026-09-04 13:34:01 +0200
committerJackson Moore <jacksonmoore@tuta.io>2026-09-04 13:34:01 +0200
commit30f6f516dd8970162d82594934be591cb2c4047f (patch)
treecb85bc23a6e790d3139990517e3d8b37c6c8ed77
parent6e69d3d53ee9037dd8bedb1267413937f9a7e817 (diff)
Inspect primary fold policy
-rw-r--r--lua/clever_f/sequence_coordinator.lua20
-rw-r--r--tests/run.lua13
2 files changed, 32 insertions, 1 deletions
diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua
index 10949bd..bcff504 100644
--- a/lua/clever_f/sequence_coordinator.lua
+++ b/lua/clever_f/sequence_coordinator.lua
@@ -75,8 +75,26 @@ function SequenceCoordinator:read_primary_invocation()
}
end
+function SequenceCoordinator:inspect_fold_open_policy(invocation)
+ if type(invocation) ~= "table" or not domain.Position.is(invocation.position) then
+ fail("fold preflight requires primary invocation state", 2)
+ end
+ local host = coordinator_records[self].host
+ if type(host.read_fold_state) ~= "function" then
+ fail("SequenceCoordinator host must provide fold state", 2)
+ end
+ local fold_state = host:read_fold_state()
+ if not domain.FoldState.is(fold_state) then
+ fail("SequenceCoordinator host must return FoldState", 2)
+ end
+ return fold_state
+end
+
function SequenceCoordinator:primary(value)
- return self:validate_primary_descriptor(value)
+ local descriptor = self:validate_primary_descriptor(value)
+ local invocation = self:read_primary_invocation()
+ invocation.fold_state = self:inspect_fold_open_policy(invocation)
+ return descriptor
end
function M.new(options)
diff --git a/tests/run.lua b/tests/run.lua
index 6752ae3..fe67fd3 100644
--- a/tests/run.lua
+++ b/tests/run.lua
@@ -7098,6 +7098,19 @@ test("Primary coordination reads normalized invocation state", function()
same("q", invocation.macro_state.register)
end)
+test("Primary coordination inspects fold policy during preflight", function()
+ local host = MemoryHost.new({
+ fold_open_policy = { "horizontal" },
+ closed_fold_levels = 1,
+ })
+ local coordinator = sequence_coordinator.new({ host = host })
+
+ same(domain.Descriptor.FIND_FORWARD, coordinator:primary("f"))
+ local operations = host:operations()
+ same("read_fold_state", operations[#operations].operation)
+ truthy(host:read_fold_state():opens("horizontal"))
+end)
+
for _, item in ipairs(tests) do
local ok, failure = xpcall(item.body, debug.traceback)
if not ok then