mirror of https://github.com/folke/lazy.nvim.git
perf(util): improve impl of throttle
This commit is contained in:
parent
64fd346728
commit
36952153ec
|
@ -74,27 +74,25 @@ end
|
|||
---@return F
|
||||
function M.throttle(ms, fn)
|
||||
local timer = vim.uv.new_timer()
|
||||
local running = false
|
||||
local first = true
|
||||
local pending = false
|
||||
|
||||
return function(...)
|
||||
local args = { ... }
|
||||
local wrapped = function()
|
||||
fn(unpack(args))
|
||||
return function()
|
||||
if timer:is_active() then
|
||||
pending = true
|
||||
return
|
||||
end
|
||||
if not running then
|
||||
if first then
|
||||
wrapped()
|
||||
first = false
|
||||
timer:start(
|
||||
0,
|
||||
ms,
|
||||
vim.schedule_wrap(function()
|
||||
fn()
|
||||
if pending then
|
||||
pending = false
|
||||
else
|
||||
timer:stop()
|
||||
end
|
||||
|
||||
timer:start(ms, 0, function()
|
||||
running = false
|
||||
vim.schedule(wrapped)
|
||||
end)
|
||||
|
||||
running = true
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -67,7 +67,10 @@ function M.create()
|
|||
self.state = vim.deepcopy(default_state)
|
||||
|
||||
self.render = Render.new(self)
|
||||
self.update = Util.throttle(Config.options.ui.throttle, self.update)
|
||||
local update = self.update
|
||||
self.update = Util.throttle(Config.options.ui.throttle, function()
|
||||
update(self)
|
||||
end)
|
||||
|
||||
for _, pattern in ipairs({ "LazyRender", "LazyFloatResized" }) do
|
||||
self:on({ "User" }, function()
|
||||
|
|
Loading…
Reference in New Issue