pkg(nixvim): Add lazy-load file to use AutoCmd to load plugin
This commit is contained in:
parent
58b503453b
commit
2b6bc9763d
1 changed files with 38 additions and 0 deletions
38
pkgs/nixvim/util/lazy-load.nix
Normal file
38
pkgs/nixvim/util/lazy-load.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{...}: {
|
||||||
|
extraConfigLuaPre =
|
||||||
|
#lua
|
||||||
|
''
|
||||||
|
do
|
||||||
|
_M.plugins = {}
|
||||||
|
_M.load = function(name)
|
||||||
|
_M.plugins = vim.tbl_deep_extend("force", _M.plugins, {
|
||||||
|
name = {
|
||||||
|
loaded = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_exec_autocmds("User", { pattern = "LazyLoad", modeline = false, data = name })
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
_M._is_loaded = function(name)
|
||||||
|
local plugins = _M.plugins
|
||||||
|
return plugins[name] and plugins[name].loaded
|
||||||
|
end
|
||||||
|
_M.on_load = function(name, fn)
|
||||||
|
if _M._is_loaded(name) then
|
||||||
|
fn(name)
|
||||||
|
else
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "LazyLoad",
|
||||||
|
callback = function(event)
|
||||||
|
if event.data == name then
|
||||||
|
fn(name)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue