lazy.nvim/lua/lazy/view/commands.lua

123 lines
2.9 KiB
Lua
Raw Normal View History

2022-11-21 06:25:28 +08:00
local View = require("lazy.view")
local Manage = require("lazy.manage")
local Util = require("lazy.util")
local Config = require("lazy.core.config")
2022-11-21 06:25:28 +08:00
local M = {}
---@param cmd string
---@param plugins? LazyPlugin[]
function M.cmd(cmd, plugins)
cmd = cmd == "" and "home" or cmd
2022-11-21 06:25:28 +08:00
local command = M.commands[cmd]
if command == nil then
Util.error("Invalid lazy command '" .. cmd .. "'")
else
command(plugins)
2022-11-21 06:25:28 +08:00
end
end
---@class LazyCommands
2022-11-21 06:25:28 +08:00
M.commands = {
clean = function(plugins)
2022-12-01 06:14:16 +08:00
Manage.clean({ clear = true, mode = "clean", plugins = plugins })
2022-11-21 06:25:28 +08:00
end,
clear = function()
Manage.clear()
View.show()
end,
2022-11-21 06:25:28 +08:00
install = function()
2022-12-01 06:14:16 +08:00
Manage.install({ clear = true, mode = "install" })
2022-11-23 04:12:50 +08:00
end,
log = function(plugins)
2022-12-01 06:14:16 +08:00
Manage.log({ clear = true, mode = "log", plugins = plugins })
2022-11-21 06:25:28 +08:00
end,
home = function()
View.show("home")
2022-11-21 06:25:28 +08:00
end,
show = function()
View.show("home")
end,
2022-11-29 17:30:14 +08:00
help = function()
View.show("help")
end,
debug = function()
View.show("debug")
end,
2022-11-29 19:02:25 +08:00
profile = function()
View.show("profile")
end,
2022-11-21 06:25:28 +08:00
sync = function()
2022-12-01 06:14:16 +08:00
Manage.clean({ clear = true, wait = true, mode = "sync" })
Manage.update()
Manage.install()
2022-11-21 06:25:28 +08:00
end,
update = function(plugins)
2022-12-01 06:14:16 +08:00
Manage.update({ clear = true, mode = "update", plugins = plugins })
2022-11-21 06:25:28 +08:00
end,
check = function(plugins)
2022-12-01 06:14:16 +08:00
Manage.check({ clear = true, mode = "check", plugins = plugins })
end,
restore = function(plugins)
2022-12-01 06:14:16 +08:00
Manage.update({ clear = true, lockfile = true, mode = "restore", plugins = plugins })
2022-11-29 07:15:13 +08:00
end,
load = function(plugins)
require("lazy.core.loader").load(plugins, { cmd = "LazyLoad" })
end,
2022-11-21 06:25:28 +08:00
}
function M.complete(cmd, prefix)
local with_plugins = false
for _, mode in ipairs(View.modes) do
if mode.name == cmd and mode.plugin then
with_plugins = true
end
end
if not with_plugins then
return
end
local plugins = {}
for name, plugin in pairs(Config.plugins) do
if cmd ~= "load" or not plugin._.loaded then
plugins[#plugins + 1] = name
end
end
table.sort(plugins)
---@param key string
return vim.tbl_filter(function(key)
return key:find(prefix) == 1
end, plugins)
end
2022-11-21 06:25:28 +08:00
function M.setup()
vim.api.nvim_create_user_command("Lazy", function(cmd)
local args = vim.split(vim.trim(cmd.args or ""), " ")
local name = args[1]
table.remove(args, 1)
M.cmd(name, #args > 0 and args or nil)
2022-11-21 06:25:28 +08:00
end, {
nargs = "?",
desc = "Lazy",
complete = function(_, line)
---@type string?
local cmd, prefix = line:match("^%s*Lazy (%w+) (%w*)")
if prefix then
return M.complete(cmd, prefix)
end
2022-11-21 06:25:28 +08:00
if line:match("^%s*Lazy %w+ ") then
return {}
end
prefix = line:match("^%s*Lazy (%w*)") or ""
2022-11-21 06:25:28 +08:00
---@param key string
return vim.tbl_filter(function(key)
return key:find(prefix) == 1
end, vim.tbl_keys(M.commands))
end,
})
end
return M