diff options
| author | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 14:32:23 +0200 |
|---|---|---|
| committer | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 14:32:23 +0200 |
| commit | 7566197269a4a1767df1ce4d39f8fad6844ec587 (patch) | |
| tree | 8048d49141e25f4fd9d2bc7357601d4af476d3a6 /lua | |
| parent | 6912c7a6adad1cb5503327896a25a4521a156485 (diff) | |
Expose diagnostic full reset
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/clever_f/action_facade.lua | 10 | ||||
| -rw-r--r-- | lua/clever_f/composition_root.lua | 4 | ||||
| -rw-r--r-- | lua/clever_f/sequence_coordinator.lua | 16 |
3 files changed, 30 insertions, 0 deletions
diff --git a/lua/clever_f/action_facade.lua b/lua/clever_f/action_facade.lua index b732ca6..a3fe173 100644 --- a/lua/clever_f/action_facade.lua +++ b/lua/clever_f/action_facade.lua @@ -91,6 +91,16 @@ end ActionFacade.Reset = ActionFacade.reset +function ActionFacade:diagnostic_full_reset() + local outcome = self:coordinator():diagnostic_full_reset() + if not domain.ActionOutcome.is(outcome) then + fail("SequenceCoordinator must return an ActionOutcome", 2) + end + return outcome +end + +ActionFacade.DiagnosticFullReset = ActionFacade.diagnostic_full_reset + local function explicit_outcome(facade, method_name) local coordinator = facade:coordinator() local outcome = coordinator[method_name](coordinator) diff --git a/lua/clever_f/composition_root.lua b/lua/clever_f/composition_root.lua index f9c7a4c..35aaf1f 100644 --- a/lua/clever_f/composition_root.lua +++ b/lua/clever_f/composition_root.lua @@ -215,6 +215,10 @@ function CompositionRoot:invoke_descriptor(value) return self:facade():invoke_descriptor(value) end +function CompositionRoot:diagnostic_full_reset() + return self:facade():diagnostic_full_reset() +end + function M.new(options) return CompositionRoot.new(options) end diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua index 6d2d31b..d8cf7f0 100644 --- a/lua/clever_f/sequence_coordinator.lua +++ b/lua/clever_f/sequence_coordinator.lua @@ -510,6 +510,22 @@ end SequenceCoordinator.Reset = SequenceCoordinator.reset +function SequenceCoordinator:diagnostic_full_reset() + local record = coordinator_records[self] + local position = domain.Position.coerce(record.host:read_cursor()) + local cleanup = record.transitions:DiagnosticFullReset( + record.host:read_window() + ) + if type(record.feedback.release_transition_cleanup) ~= "function" then + fail("FeedbackService must release diagnostic cleanup", 2) + end + record.feedback:release_transition_cleanup(cleanup) + return domain.ActionOutcome.neutral(position) +end + +SequenceCoordinator.DiagnosticFullReset = + SequenceCoordinator.diagnostic_full_reset + function SequenceCoordinator:read_explicit_invocation() local host = coordinator_records[self].host if type(host) ~= "table" |
