diff options
Diffstat (limited to 'lua/clever_f/feedback_service.lua')
| -rw-r--r-- | lua/clever_f/feedback_service.lua | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua index bb78c17..6fb40df 100644 --- a/lua/clever_f/feedback_service.lua +++ b/lua/clever_f/feedback_service.lua @@ -107,6 +107,7 @@ local function require_host(host) or type(host.remove_highlight) ~= "function" or type(host.read_buffer) ~= "function" or type(host.read_cursor) ~= "function" + or type(host.read_window) ~= "function" or type(host.register_events) ~= "function" or type(host.remove_event_registration) ~= "function" or type(host.supports_cursor_presentation) ~= "function" @@ -127,6 +128,7 @@ local function require_transitions(transitions, state) or type(transitions.ClearTargetOverlays) ~= "function" or type(transitions.AddFinalizer) ~= "function" or type(transitions.RemoveFinalizer) ~= "function" + or type(transitions.FullFinalization) ~= "function" then fail("FeedbackService transitions must manage overlay resources", 3) end @@ -482,11 +484,20 @@ function FeedbackService:cursor_moved_decision() } end -function FeedbackService:handle_finalizer_event(name) +function FeedbackService:full_finalize(window) + local record = service_records[self] + window = window or record.host:read_window() + return record.transitions:FullFinalization(window) +end + +function FeedbackService:handle_finalizer_event(name, payload) if name == "CursorMoved" then local decision = self:cursor_moved_decision() if decision.equal then decision.action = M.FinalizerAction.PRESERVE + else + decision.action = M.FinalizerAction.FINALIZE + decision.cleanup = self:full_finalize(payload and payload.window) end return decision end |
