137 lines
3.3 KiB
Lua
137 lines
3.3 KiB
Lua
-- Script to list all registered commands in Neovim
|
|
-- Run with: nvim --headless -c "luafile list-commands.lua" -c "qa"
|
|
|
|
local commands = vim.api.nvim_get_commands({})
|
|
|
|
-- Sort commands alphabetically
|
|
local sorted_commands = {}
|
|
for name, cmd in pairs(commands) do
|
|
table.insert(sorted_commands, {
|
|
name = name,
|
|
cmd = cmd
|
|
})
|
|
end
|
|
|
|
table.sort(sorted_commands, function(a, b)
|
|
return a.name < b.name
|
|
end)
|
|
|
|
-- Group commands by plugin/source (if we can determine it)
|
|
local command_groups = {}
|
|
local conflicts = {}
|
|
|
|
-- Check for conflicts (commands with same name but different definitions)
|
|
local seen_names = {}
|
|
|
|
print("=" .. string.rep("=", 78))
|
|
print("ALL REGISTERED COMMANDS IN NVIM CONFIG")
|
|
print("=" .. string.rep("=", 78))
|
|
print()
|
|
|
|
for _, item in ipairs(sorted_commands) do
|
|
local name = item.name
|
|
local cmd = item.cmd
|
|
|
|
-- Check for conflicts
|
|
if seen_names[name] then
|
|
if not conflicts[name] then
|
|
conflicts[name] = {seen_names[name], cmd}
|
|
else
|
|
table.insert(conflicts[name], cmd)
|
|
end
|
|
else
|
|
seen_names[name] = cmd
|
|
end
|
|
|
|
-- Format command info
|
|
local cmd_type = cmd.bang and "!" or ""
|
|
local cmd_range = cmd.range and "range" or ""
|
|
local cmd_count = cmd.count ~= "" and cmd.count or ""
|
|
|
|
local flags = {}
|
|
if cmd_type ~= "" then table.insert(flags, "bang") end
|
|
if cmd_range ~= "" then table.insert(flags, "range") end
|
|
if cmd_count ~= "" then table.insert(flags, "count=" .. cmd_count) end
|
|
if cmd.nargs ~= "" then table.insert(flags, "nargs=" .. cmd.nargs) end
|
|
|
|
local flags_str = #flags > 0 and (" [" .. table.concat(flags, ", ") .. "]") or ""
|
|
|
|
print(string.format("%-30s %s%s", name, cmd.definition or "", flags_str))
|
|
end
|
|
|
|
print()
|
|
print("=" .. string.rep("=", 78))
|
|
print("SUMMARY")
|
|
print("=" .. string.rep("=", 78))
|
|
print(string.format("Total commands: %d", #sorted_commands))
|
|
|
|
if next(conflicts) then
|
|
print()
|
|
print("⚠️ CONFLICTS DETECTED:")
|
|
print("=" .. string.rep("=", 78))
|
|
for name, defs in pairs(conflicts) do
|
|
print(string.format("Command '%s' has multiple definitions:", name))
|
|
for i, def in ipairs(defs) do
|
|
print(string.format(" %d. %s", i, def.definition or ""))
|
|
end
|
|
print()
|
|
end
|
|
else
|
|
print()
|
|
print("✓ No conflicts detected!")
|
|
end
|
|
|
|
print()
|
|
print("=" .. string.rep("=", 78))
|
|
print("COMMANDS BY PLUGIN (from config files)")
|
|
print("=" .. string.rep("=", 78))
|
|
print()
|
|
|
|
-- Commands from config files
|
|
local config_commands = {
|
|
["Tmux Navigator"] = {
|
|
"TmuxNavigateLeft",
|
|
"TmuxNavigateDown",
|
|
"TmuxNavigateUp",
|
|
"TmuxNavigateRight",
|
|
"TmuxNavigatePrevious",
|
|
},
|
|
["Executor"] = {
|
|
"ExecutorRun",
|
|
"ExecutorToggleDetail",
|
|
"ExecutorSetCommand",
|
|
},
|
|
["DBUI"] = {
|
|
"DBUI",
|
|
"DBUIToggle",
|
|
"DBUIAddConnection",
|
|
"DBUIFindBuffer",
|
|
"DBUIRenameBuffer",
|
|
"DBUILastQueryInfo",
|
|
},
|
|
["Diffview"] = {
|
|
"DiffviewOpen",
|
|
"DiffviewClose",
|
|
"DiffviewFileHistory",
|
|
"DiffviewToggleFiles",
|
|
},
|
|
["Git Blame"] = {
|
|
"GitBlameToggle",
|
|
"GitBlameOpenCommitURL",
|
|
"GitBlameCopyCommitURL",
|
|
},
|
|
["Octo"] = {
|
|
"Octo",
|
|
},
|
|
}
|
|
|
|
for plugin, cmds in pairs(config_commands) do
|
|
print(string.format("%s:", plugin))
|
|
for _, cmd in ipairs(cmds) do
|
|
local exists = commands[cmd] ~= nil
|
|
local status = exists and "✓" or "✗"
|
|
print(string.format(" %s %s", status, cmd))
|
|
end
|
|
print()
|
|
end
|