summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorJackson Moore <jacksonmoore@tuta.io>2026-09-04 12:49:15 +0200
committerJackson Moore <jacksonmoore@tuta.io>2026-09-04 12:49:15 +0200
commitcd8b1dae826390bebf5a4566f69008246d705c7c (patch)
tree7d1f814a0c9cd341e42bca06f24a32869768efc0 /lua
parent19904ba49a03a450e8a573358eb3417a3aafdb1f (diff)
Sample eager marker policy
Diffstat (limited to 'lua')
-rw-r--r--lua/clever_f/feedback_service.lua26
1 files changed, 24 insertions, 2 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua
index 72ee1dc..3575f27 100644
--- a/lua/clever_f/feedback_service.lua
+++ b/lua/clever_f/feedback_service.lua
@@ -61,6 +61,11 @@ local DIRECT_FINALIZER_EVENTS = {
TextChanged = true,
}
+local EAGER_EVENT_SET = {}
+for _, event_name in ipairs(M.EAGER_EVENTS) do
+ EAGER_EVENT_SET[event_name] = true
+end
+
local DEFAULT_LABEL_DEFINITION = {
guifg = "red",
guibg = "NONE",
@@ -191,6 +196,7 @@ function FeedbackService.new(options)
owned_finalizer = nil,
activation = nil,
eager_registration = nil,
+ last_eager_decision = nil,
}
return service
end
@@ -819,8 +825,24 @@ function FeedbackService:refresh_primary(resolved_target, window)
return self:start_highlight_timer(window)
end
-function FeedbackService:handle_eager_event()
- return false
+function FeedbackService:handle_eager_event(name, payload)
+ if not EAGER_EVENT_SET[name] then
+ return false
+ end
+ local record = service_records[self]
+ local decision = {
+ event = name,
+ payload = payload,
+ mark_char = record.policy:sample_markers().mark_char,
+ cleaned = false,
+ }
+ record.last_eager_decision = decision
+ return decision
+end
+
+function FeedbackService:last_eager_decision()
+ local decision = service_records[self].last_eager_decision
+ return decision and copy(decision) or nil
end
function FeedbackService:activate()