summaryrefslogtreecommitdiff
path: root/lua/clever_f
diff options
context:
space:
mode:
Diffstat (limited to 'lua/clever_f')
-rw-r--r--lua/clever_f/repeat_resolver.lua12
1 files changed, 7 insertions, 5 deletions
diff --git a/lua/clever_f/repeat_resolver.lua b/lua/clever_f/repeat_resolver.lua
index 2924bd6..4cb1294 100644
--- a/lua/clever_f/repeat_resolver.lua
+++ b/lua/clever_f/repeat_resolver.lua
@@ -48,8 +48,9 @@ local function require_transitions(transitions, state)
transitions = transitions or state_transitions.new(state)
if type(transitions) ~= "table"
or type(transitions.SetRepeatTimestamp) ~= "function"
+ or type(transitions.PublicReset) ~= "function"
then
- fail("RepeatResolver transitions must set repeat timestamp", 3)
+ fail("RepeatResolver transitions must set repeat time and apply Public Reset", 3)
end
return transitions
end
@@ -151,7 +152,7 @@ end
RepeatResolver.sample_repeat_timeout = RepeatResolver.sample_repeat_timeout_ms
-function RepeatResolver:evaluate_timeout()
+function RepeatResolver:evaluate_timeout(current_window)
local timeout = self:sample_repeat_timeout_ms()
if timeout == 0 then
return M.Decision.REPEAT, nil
@@ -173,7 +174,8 @@ function RepeatResolver:evaluate_timeout()
if elapsed_ms <= timeout then
return M.Decision.REPEAT, elapsed_ms
end
- return nil, elapsed_ms
+ local cleanup = record.transitions:PublicReset(current_window)
+ return M.Decision.ACQUIRE, elapsed_ms, cleanup
end
RepeatResolver.check_timeout = RepeatResolver.evaluate_timeout
@@ -201,8 +203,8 @@ function M.sample_repeat_timeout_ms(options)
return RepeatResolver.new(options):sample_repeat_timeout_ms()
end
-function M.evaluate_timeout(options)
- return RepeatResolver.new(options):evaluate_timeout()
+function M.evaluate_timeout(options, current_window)
+ return RepeatResolver.new(options):evaluate_timeout(current_window)
end
setmetatable(M, {