diff --git a/README.md b/README.md index 85020ab..21ab555 100644 --- a/README.md +++ b/README.md @@ -303,6 +303,8 @@ return { version = nil, -- version = "*", -- enable this to try installing the latest stable versions of plugins }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. concurrency = nil, ---@type number limit the maximum amount of concurrent tasks git = { @@ -330,20 +332,21 @@ return { -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. border = "none", icons = { - loaded = "●", - not_loaded = "○", cmd = " ", config = "", event = "", ft = " ", init = " ", + import = " ", keys = " ", + lazy = "鈴 ", + loaded = "●", + not_loaded = "○", plugin = " ", runtime = " ", source = " ", start = "", task = "✔ ", - lazy = "鈴 ", list = { "●", "➜", @@ -361,21 +364,15 @@ return { -- open lazygit log ["l"] = function(plugin) - require("lazy.util").open_cmd({ "lazygit", "log" }, { + require("lazy.util").float_term({ "lazygit", "log" }, { cwd = plugin.dir, - terminal = true, - close_on_exit = true, - enter = true, }) end, -- open a terminal for the plugin dir ["t"] = function(plugin) - require("lazy.util").open_cmd({ vim.go.shell }, { + require("lazy.util").float_term(nil, { cwd = plugin.dir, - terminal = true, - close_on_exit = true, - enter = true, }) end, }, @@ -410,7 +407,7 @@ return { -- The default is to disable on: -- * VimEnter: not useful to cache anything else beyond startup -- * BufReadPre: this will be triggered early when opening a file from the command line directly - disable_events = { "VimEnter", "BufReadPre" }, + disable_events = { "UIEnter", "BufReadPre" }, ttl = 3600 * 24 * 5, -- keep unused modules for up to 5 days }, reset_packpath = true, -- reset the package path to improve startup time @@ -498,7 +495,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 home` | `require("lazy").home()` | Go back to plugin list | | `: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`. Use `:Lazy! load` to skip `cond` checks. | | `:Lazy log [plugins]` | `require("lazy").log(opts?)` | Show recent updates | | `: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 | @@ -532,9 +529,11 @@ Stats API (`require("lazy").stats()`): -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & Macos) -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - startuptime_cputime = false, + real_cputime = false, count = 0, -- total number of plugins loaded = 0, -- number of loaded plugins + ---@type table + times = {}, } ``` @@ -738,6 +737,7 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori | **LazyReasonCmd** | **_Operator_** | | | **LazyReasonEvent** | **_Constant_** | | | **LazyReasonFt** | **_Character_** | | +| **LazyReasonImport** | **_Identifier_** | | | **LazyReasonKeys** | **_Statement_** | | | **LazyReasonPlugin** | **_Special_** | | | **LazyReasonRuntime** | **_@macro_** | | diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index c2bc844..235335b 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -157,7 +157,8 @@ end ---@class Loader ---@param plugins string|LazyPlugin|string[]|LazyPlugin[] ---@param reason {[string]:string} -function M.load(plugins, reason) +---@param opts? {force:boolean} when force is true, we skip the cond check +function M.load(plugins, reason, opts) ---@diagnostic disable-next-line: cast-local-type plugins = (type(plugins) == "string" or plugins.name) and { plugins } or plugins ---@cast plugins (string|LazyPlugin)[] @@ -174,19 +175,20 @@ function M.load(plugins, reason) end end if plugin and not plugin._.loaded then - M._load(plugin, reason) + M._load(plugin, reason, opts) end end end ---@param plugin LazyPlugin ---@param reason {[string]:string} -function M._load(plugin, reason) +---@param opts? {force:boolean} when force is true, we skip the cond check +function M._load(plugin, reason, opts) if not plugin._.installed then return Util.error("Plugin " .. plugin.name .. " is not installed") end - if plugin.cond ~= nil then + if plugin.cond ~= nil and not (opts and opts.force) then if plugin.cond == false or (type(plugin.cond) == "function" and not plugin.cond()) then plugin._.cond = false return diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index 39bd3f8..4944e65 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -50,7 +50,8 @@ M.commands = { end, ---@param opts ManagerOpts load = function(opts) - require("lazy.core.loader").load(opts.plugins, { cmd = "LazyLoad" }) + -- when a command is executed with a bang, wait will be set + require("lazy.core.loader").load(opts.plugins, { cmd = "Lazy load" }, { force = opts.wait }) end, log = Manage.log, build = Manage.build, diff --git a/lua/lazy/view/config.lua b/lua/lazy/view/config.lua index e229352..b75c0f5 100644 --- a/lua/lazy/view/config.lua +++ b/lua/lazy/view/config.lua @@ -130,7 +130,7 @@ M.commands = { id = 12, }, load = { - desc = "Load a plugin that has not been loaded yet. Similar to `:packadd`. Like `:Lazy load foo.nvim`", + desc = "Load a plugin that has not been loaded yet. Similar to `:packadd`. Like `:Lazy load foo.nvim`. Use `:Lazy! load` to skip `cond` checks.", id = 13, plugins = true, plugins_required = true,