diff --git a/README.md b/README.md index 157e8d6..9fb769b 100644 --- a/README.md +++ b/README.md @@ -277,6 +277,28 @@ return { ## 🚀 Usage +You can manage all your plugins with the main `:Lazy` command. +Alternatively you can start any operation with a specific command, sub command or API function: + + + +| Command | Lua | Key Mapping | Description | +| --------------------------------- | --------------------------- | ----------- | ------------------------------------------------------ | +| `:Lazy home` or `:LazyHome` | `require("lazy").home()` | `` | Go back to plugin list | +| `:Lazy install` or `:LazyInstall` | `require("lazy").install()` | `` | Install missing plugins | +| `:Lazy update` or `:LazyUpdate` | `require("lazy").update()` | `` | Update all plugins. This will also update the lockfile | +| `:Lazy sync` or `:LazySync` | `require("lazy").sync()` | `` | Run install, clean and update | +| `:Lazy clean` or `:LazyClean` | `require("lazy").clean()` | `` | Clean plugins that are no longer needed | +| `:Lazy check` or `:LazyCheck` | `require("lazy").check()` | `` | Check for updates and show the log (git fetch) | +| `:Lazy log` or `:LazyLog` | `require("lazy").log()` | `` | Show recent updates for all plugins | +| `:Lazy restore` or `:LazyRestore` | `require("lazy").restore()` | `` | Updates all plugins to the state in the lockfile | +| `:Lazy profile` or `:LazyProfile` | `require("lazy").profile()` | `

` | Show detailed profiling | +| `:Lazy debug` or `:LazyDebug` | `require("lazy").debug()` | `` | Show debug information | +| `:Lazy help` or `:LazyHelp` | `require("lazy").help()` | `` | Toggle this help page | +| `:Lazy clear` or `:LazyClear` | `require("lazy").clear()` | | Clear finished tasks | + + + ## 📊 Profiler The profiling view shows you why and how long it took to load your plugins. diff --git a/lua/lazy/docs.lua b/lua/lazy/docs.lua index 4b2c1f1..7be8f55 100644 --- a/lua/lazy/docs.lua +++ b/lua/lazy/docs.lua @@ -57,7 +57,7 @@ function M.save(contents) if not readme:find(pattern) then error("tag " .. tag .. " not found") end - if tag == "toc" then + if tag == "toc" or tag == "commands" then readme = readme:gsub(pattern, "%1\n\n" .. content .. "\n\n%2") else readme = readme:gsub(pattern, "%1\n\n```lua\n" .. content .. "\n```\n\n%2") @@ -73,6 +73,32 @@ function M.extract(file, pattern) return assert(init:match(pattern)) end +function M.commands() + local commands = require("lazy.view.commands").commands + local modes = require("lazy.view").modes + local lines = { + { "Command", "Lua", "Key Mapping", "Description" }, + { "---", "---", "---", "---" }, + } + for _, mode in ipairs(modes) do + if not mode.plugin and commands[mode.name] then + lines[#lines + 1] = { + ("`:Lazy %s`"):format(mode.name) .. " or " .. ("`:Lazy%s`"):format( + mode.name:sub(1, 1):upper() .. mode.name:sub(2) + ), + ([[`require("lazy").%s()`]]):format(mode.name), + mode.key and ("`<%s>`"):format(mode.key) or "", + mode.desc, + } + end + end + local ret = {} + for _, line in ipairs(lines) do + ret[#ret + 1] = "| " .. table.concat(line, " | ") .. " |" + end + return table.concat(ret, "\n") +end + function M.update() local cache_config = M.extract("lua/lazy/core/cache.lua", "\nM%.config = ({.-\n})") local config = M.extract("lua/lazy/core/config.lua", "\nM%.defaults = ({.-\n})") @@ -85,6 +111,7 @@ function M.update() bootstrap = M.extract("lua/lazy/init.lua", "function M%.bootstrap%(%)\n(.-)\nend"), config = config, spec = Util.read_file("lua/lazy/example.lua"), + commands = M.commands(), }) vim.cmd.checktime() end diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 57f3688..df0d2a5 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -16,6 +16,7 @@ M.modes = { { name = "profile", key = "P", desc = "Show detailed profiling", toggle = true }, { name = "debug", key = "D", desc = "Show debug information", toggle = true }, { name = "help", key = "?", desc = "Toggle this help page", toggle = true }, + { name = "clear", desc = "Clear finished tasks", hide = true }, { plugin = true, name = "update", key = "u", desc = "Update this plugin. This will also update the lockfile" }, { @@ -163,21 +164,23 @@ function M.show(mode) }) for _, m in ipairs(M.modes) do - vim.keymap.set("n", m.key, function() - local Commands = require("lazy.view.commands") - if m.plugin then - local plugin = get_plugin() - if plugin then - Commands.cmd(m.name, { plugin }) + if m.key then + vim.keymap.set("n", m.key, function() + local Commands = require("lazy.view.commands") + if m.plugin then + local plugin = get_plugin() + if plugin then + Commands.cmd(m.name, { plugin }) + end + else + if M.mode == m.name and m.toggle then + M.mode = nil + return update() + end + Commands.cmd(m.name) end - else - if M.mode == m.name and m.toggle then - M.mode = nil - return update() - end - Commands.cmd(m.name) - end - end, { buffer = buf }) + end, { buffer = buf }) + end end vim.api.nvim_create_autocmd("User", { diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 1755573..04b77aa 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -150,8 +150,11 @@ function M:help() for _, mode in ipairs(View.modes) do local title = mode.name:sub(1, 1):upper() .. mode.name:sub(2) self:append("- ", "LazySpecial", { indent = 2 }) - self:append(title, "Title"):append(" <" .. mode.key .. "> ", "LazyKey") - self:append(mode.desc or ""):nl() + self:append(title, "Title") + if mode.key then + self:append(" <" .. mode.key .. ">", "LazyKey") + end + self:append(" " .. (mode.desc or "")):nl() end end