feat: add describe subcommand
parent
c20336ee60
commit
da637930bc
|
|
@ -0,0 +1,74 @@
|
||||||
|
local Dep = require 'sloth-flake.dep'
|
||||||
|
local utils = require 'sloth-flake.utils'
|
||||||
|
|
||||||
|
local function yesno(value)
|
||||||
|
return value and "Yes" or "No"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function list(items)
|
||||||
|
if items == nil or #items == 0 then
|
||||||
|
return "None"
|
||||||
|
end
|
||||||
|
return vim.iter(items):join(', ')
|
||||||
|
end
|
||||||
|
|
||||||
|
local function describe(dep)
|
||||||
|
utils.info('Name: %s', dep.name)
|
||||||
|
utils.info('Is loaded: %s', yesno(dep.is_loaded))
|
||||||
|
utils.info('Is lazy: %s', yesno(dep.is_lazy))
|
||||||
|
utils.info('Has init: %s', yesno(dep.init))
|
||||||
|
utils.info('Has config: %s', yesno(dep.config))
|
||||||
|
utils.info('Dependencies: %s', list(dep.dependency_names))
|
||||||
|
utils.info('Filetypes: %s', list(dep.ft))
|
||||||
|
utils.info('Commands: %s', list(dep.cmd))
|
||||||
|
if dep.events == nil then
|
||||||
|
utils.info('Events: None')
|
||||||
|
else
|
||||||
|
utils.info('Events:')
|
||||||
|
for _, event in ipairs(dep.events) do
|
||||||
|
for _, name in ipairs(event.name) do
|
||||||
|
for _, pattern in ipairs(event.pattern) do
|
||||||
|
utils.info(' - %s %s', name, pattern)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if dep.keymaps == nil then
|
||||||
|
utils.info('Keymaps: None')
|
||||||
|
else
|
||||||
|
utils.info('Keymaps:')
|
||||||
|
for _, keymap in ipairs(dep.keymaps) do
|
||||||
|
for _, mode in ipairs(keymap.mode) do
|
||||||
|
for _, mapping in ipairs(keymap.mapping) do
|
||||||
|
utils.info(' - %s %s', mode, mapping)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
complete = function(line)
|
||||||
|
if line.arg_idx == 3 then
|
||||||
|
local prefix = line.args[line.arg_idx].arg
|
||||||
|
return vim.iter(Dep.all()):map(function(name)
|
||||||
|
return name
|
||||||
|
end):filter(function(name)
|
||||||
|
return vim.startswith(name, prefix)
|
||||||
|
end):totable()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
cmd = function(plugins)
|
||||||
|
if #plugins == 0 then
|
||||||
|
utils.error("You should at least give a plugin to describe!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local plugin = plugins[1]
|
||||||
|
local dep = Dep.get(plugin)
|
||||||
|
if dep == nil then
|
||||||
|
return utils.error([[Unknown plugin "%s"]], plugin)
|
||||||
|
end
|
||||||
|
describe(dep)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ local commands = {
|
||||||
list = require 'sloth-flake.command.list',
|
list = require 'sloth-flake.command.list',
|
||||||
load = require 'sloth-flake.command.load',
|
load = require 'sloth-flake.command.load',
|
||||||
version = require 'sloth-flake.command.version',
|
version = require 'sloth-flake.command.version',
|
||||||
|
describe = require 'sloth-flake.command.describe',
|
||||||
}
|
}
|
||||||
|
|
||||||
local function parse_line(line, cursor_pos)
|
local function parse_line(line, cursor_pos)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
|
function M.info(...)
|
||||||
|
print(string.format(...))
|
||||||
|
end
|
||||||
|
|
||||||
function M.error(...)
|
function M.error(...)
|
||||||
vim.api.nvim_err_writeln(string.format(...))
|
vim.api.nvim_err_writeln(string.format(...))
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue