perf: async render

This commit is contained in:
Folke Lemaitre 2024-06-28 17:44:21 +02:00
parent a36ebd2a75
commit ab46edbd47
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
2 changed files with 26 additions and 29 deletions

View file

@ -49,6 +49,7 @@ function Task.new(plugin, name, task, opts)
return other.name ~= name or other:running()
end, plugin._.tasks or {})
table.insert(plugin._.tasks, self)
self:render()
return self
end
@ -119,12 +120,18 @@ function Task:log(msg, level)
msg = type(msg) == "table" and table.concat(msg, "\n") or msg
---@cast msg string
table.insert(self._log, { msg = msg, level = level })
vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false })
self:render()
if Config.headless() then
self:headless()
end
end
function Task:render()
vim.schedule(function()
vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false })
end)
end
function Task:headless()
if not Config.options.headless.log then
return
@ -163,11 +170,13 @@ function Task:_done()
if self._opts.on_done then
self._opts.on_done(self)
end
vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false })
vim.api.nvim_exec_autocmds("User", {
pattern = "LazyPlugin" .. self.name:sub(1, 1):upper() .. self.name:sub(2),
data = { plugin = self.plugin.name },
})
vim.schedule(function()
self:render()
vim.api.nvim_exec_autocmds("User", {
pattern = "LazyPlugin" .. self.name:sub(1, 1):upper() .. self.name:sub(2),
data = { plugin = self.plugin.name },
})
end)
end
function Task:time()