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