summaryrefslogtreecommitdiff
path: root/lua/clever_f/feedback_service.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/clever_f/feedback_service.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()