feat(commands): allow force loading a plugin

This commit is contained in:
Luuk van Baal 2023-01-06 00:28:55 +01:00
commit d6f552c68a
3 changed files with 6 additions and 2 deletions

View file

@ -498,7 +498,7 @@ Any operation can be started from the UI, with a sub command or an API function:
| `:Lazy help` | `require("lazy").help()` | Toggle this help page | | `:Lazy help` | `require("lazy").help()` | Toggle this help page |
| `:Lazy home` | `require("lazy").home()` | Go back to plugin list | | `:Lazy home` | `require("lazy").home()` | Go back to plugin list |
| `:Lazy install [plugins]` | `require("lazy").install(opts?)` | Install missing plugins | | `:Lazy install [plugins]` | `require("lazy").install(opts?)` | Install missing plugins |
| `:Lazy load {plugins}` | `require("lazy").load(opts)` | Load a plugin that has not been loaded yet. Similar to `:packadd`. Like `:Lazy load foo.nvim` | | `:Lazy load(!) {plugins}` | `require("lazy").load(opts)` | Load a plugin that has not been loaded yet. Similar to `:packadd`. Like `:Lazy load foo.nvim`. `load!` will force load the plugin, ignoring `cond` |
| `:Lazy log [plugins]` | `require("lazy").log(opts?)` | Show recent updates | | `:Lazy log [plugins]` | `require("lazy").log(opts?)` | Show recent updates |
| `:Lazy profile` | `require("lazy").profile()` | Show detailed profiling | | `:Lazy profile` | `require("lazy").profile()` | Show detailed profiling |
| `:Lazy restore [plugins]` | `require("lazy").restore(opts?)` | Updates all plugins to the state in the lockfile. For a single plugin: restore it to the state in the lockfile or to a given commit under the cursor | | `:Lazy restore [plugins]` | `require("lazy").restore(opts?)` | Updates all plugins to the state in the lockfile. For a single plugin: restore it to the state in the lockfile or to a given commit under the cursor |

View file

@ -187,7 +187,8 @@ function M._load(plugin, reason)
end end
if plugin.cond ~= nil then if plugin.cond ~= nil then
if plugin.cond == false or (type(plugin.cond) == "function" and not plugin.cond()) then local force = reason.cmd and reason.cmd:sub(-1) == "!"
if not force and (plugin.cond == false or (type(plugin.cond) == "function" and not plugin.cond())) then
plugin._.cond = false plugin._.cond = false
return return
end end

View file

@ -52,6 +52,9 @@ M.commands = {
load = function(opts) load = function(opts)
require("lazy.core.loader").load(opts.plugins, { cmd = "LazyLoad" }) require("lazy.core.loader").load(opts.plugins, { cmd = "LazyLoad" })
end, end,
["load!"] = function(opts)
require("lazy.core.loader").load(opts.plugins, { cmd = "LazyLoad!" })
end,
log = Manage.log, log = Manage.log,
build = Manage.build, build = Manage.build,
clean = Manage.clean, clean = Manage.clean,