diff options
Diffstat (limited to 'dot_config')
| -rw-r--r-- | dot_config/nvim/init.lua | 1 | ||||
| -rw-r--r-- | dot_config/nvim/lua/config/pack.lua | 41 |
2 files changed, 42 insertions, 0 deletions
diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua index 82bcda0..cc5d113 100644 --- a/dot_config/nvim/init.lua +++ b/dot_config/nvim/init.lua @@ -125,3 +125,4 @@ require("plugins.init") require("config.keymaps") require("config.autocmds") +require("config.pack") diff --git a/dot_config/nvim/lua/config/pack.lua b/dot_config/nvim/lua/config/pack.lua new file mode 100644 index 0000000..bdef872 --- /dev/null +++ b/dot_config/nvim/lua/config/pack.lua @@ -0,0 +1,41 @@ +-- User commands wrapping vim.pack for ergonomic update/clean/sync workflows. + +local function orphans() + return vim + .iter(vim.pack.get()) + :filter(function(x) + return not x.active + end) + :map(function(x) + return x.spec.name + end) + :totable() +end + +local function clean() + local names = orphans() + if #names == 0 then + vim.notify("no orphan plugins", vim.log.levels.INFO) + return + end + vim.pack.del(names) +end + +local function update() + vim.pack.update(nil, { force = true }) +end + +vim.api.nvim_create_user_command("PackClean", clean, { + desc = "Remove plugins not declared in vim.pack.add()", +}) + +vim.api.nvim_create_user_command("PackUpdate", update, { + desc = "Update all plugins without confirmation", +}) + +vim.api.nvim_create_user_command("PackSync", function() + clean() + update() +end, { + desc = "Clean orphan plugins then update the rest", +}) |
