summaryrefslogtreecommitdiff
path: root/lua/clever_f
diff options
context:
space:
mode:
Diffstat (limited to 'lua/clever_f')
-rw-r--r--lua/clever_f/sequence_coordinator.lua20
1 files changed, 19 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)