feat: handler for lazy-loading colorschemes

This commit is contained in:
Marc Jakobi
2024-06-10 15:43:25 +02:00
parent d1131b7c83
commit d4a2eebb84
6 changed files with 105 additions and 1 deletions
+53
View File
@@ -0,0 +1,53 @@
local loader = require("lz.n.loader")
---@class lz.n.ColorschemeHandler: lz.n.Handler
---@field augroup? integer
---@type lz.n.ColorschemeHandler
local M = {
pending = {},
type = "colorscheme",
augroup = nil,
}
---@param plugin lz.n.Plugin
function M.del(plugin)
for _, plugins in pairs(M.pending) do
plugins[plugin.name] = nil
end
end
---@param name string
local function on_colorscheme(name)
if vim.tbl_contains(vim.fn.getcompletion("", "color"), name) then
return
end
loader.load(vim.tbl_values(M.pending[name]))
end
local function init()
if M.augroup then
return
end
M.augroup = vim.api.nvim_create_augroup("lz_n_handler_colorscheme", { clear = true })
vim.api.nvim_create_autocmd("ColorSchemePre", {
callback = function(event)
on_colorscheme(event.match)
end,
group = M.augroup,
})
end
---@param plugin lz.n.Plugin
function M.add(plugin)
if not plugin.colorscheme then
return
end
init()
for _, colorscheme in pairs(plugin.colorscheme) do
M.pending[colorscheme] = M.pending[colorscheme] or {}
M.pending[colorscheme][plugin.name] = plugin.name
end
end
return M
+2
View File
@@ -12,6 +12,7 @@ M.types = {
event = "event",
ft = "ft",
keys = "keys",
colorscheme = "colorscheme",
}
local handlers = {
@@ -19,6 +20,7 @@ local handlers = {
event = require("lz.n.handler.event"),
ft = require("lz.n.handler.ft"),
keys = require("lz.n.handler.keys"),
colorscheme = require("lz.n.handler.colorscheme"),
}
---@param plugin lz.n.Plugin