From 2b6bc9763d3d1c7be05242ab5bd9527d9a51f9de Mon Sep 17 00:00:00 2001 From: ulic-youthlic Date: Sun, 13 Jul 2025 06:04:55 +0800 Subject: [PATCH] pkg(nixvim): Add lazy-load file to use AutoCmd to load plugin --- pkgs/nixvim/util/lazy-load.nix | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pkgs/nixvim/util/lazy-load.nix diff --git a/pkgs/nixvim/util/lazy-load.nix b/pkgs/nixvim/util/lazy-load.nix new file mode 100644 index 0000000..4b515c3 --- /dev/null +++ b/pkgs/nixvim/util/lazy-load.nix @@ -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 + ''; +}