fix: debounce error (#2337)

This commit is contained in:
yetone
2025-06-26 15:38:57 +08:00
committed by GitHub
parent 5b2a0e6118
commit 102197c5bb
2 changed files with 18 additions and 8 deletions

View File

@@ -24,7 +24,7 @@ local SUGGESTION_NS = api.nvim_create_namespace("avante_suggestion")
---@field augroup integer ---@field augroup integer
---@field ignore_patterns table ---@field ignore_patterns table
---@field negate_patterns table ---@field negate_patterns table
---@field _timer? integer ---@field _timer? uv.uv_timer_t | uv_timer_t
---@field _contexts table ---@field _contexts table
---@field is_on_throttle boolean ---@field is_on_throttle boolean
local Suggestion = {} local Suggestion = {}
@@ -348,7 +348,10 @@ end
function Suggestion:stop_timer() function Suggestion:stop_timer()
if self._timer then if self._timer then
pcall(function() fn.timer_stop(self._timer) end) pcall(function()
self._timer:stop()
self._timer:close()
end)
self._timer = nil self._timer = nil
end end
end end

View File

@@ -674,19 +674,26 @@ function M.trim_all_line_numbers(content)
end end
function M.debounce(func, delay) function M.debounce(func, delay)
local timer_id = nil local timer = nil
return function(...) return function(...)
local args = { ... } local args = { ... }
if timer_id then pcall(function() fn.timer_stop(timer_id) end) end if timer then
timer:stop()
timer:close()
end
timer_id = fn.timer_start(delay, function() timer = vim.loop.new_timer()
func(unpack(args)) if not timer then return end
timer_id = nil
timer:start(delay, 0, function()
vim.schedule(function() func(unpack(args)) end)
timer:close()
timer = nil
end) end)
return timer_id return timer
end end
end end