diff options
Diffstat (limited to 'lua/clever_f')
| -rw-r--r-- | lua/clever_f/feedback_service.lua | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua index edaa39d..ac5f54b 100644 --- a/lua/clever_f/feedback_service.lua +++ b/lua/clever_f/feedback_service.lua @@ -712,23 +712,33 @@ function FeedbackService:cancel_highlight_timer() return identity end -function FeedbackService:handle_highlight_timer(callback_identity) +function FeedbackService:handle_highlight_timer(callback_identity, window) if callback_identity == nil then fail("highlight timer callback identity must be present", 2) end - return callback_identity == service_records[self].state.highlight_timer + local record = service_records[self] + if callback_identity ~= record.state.highlight_timer then + return false + end + local _, current = record.transitions:ClearHighlightTimer(callback_identity) + if not current then + return false + end + self:remove_character_overlays(window or record.host:read_window()) + return true end -function FeedbackService:start_highlight_timer() +function FeedbackService:start_highlight_timer(window) local record = service_records[self] local delay = self:highlight_timer_delay() if delay == nil then return nil end + window = window or record.host:read_window() self:cancel_highlight_timer() local identity identity = record.host:start_timer(delay, function(callback_identity) - self:handle_highlight_timer(callback_identity or identity) + self:handle_highlight_timer(callback_identity or identity, window) end) record.transitions:SetHighlightTimer(identity) return identity |
