feat: new mappings format for which-key v3. Forgot to push :)

This commit is contained in:
Folke Lemaitre 2024-07-12 22:54:35 +02:00
parent 4a6c0c2850
commit 702471e454
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
5 changed files with 94 additions and 80 deletions

View file

@ -61,52 +61,51 @@ end
-- register all text objects with which-key
function M.ai_whichkey()
---@type table<string, string|table>
local i = {
[" "] = "Whitespace",
['"'] = 'Balanced "',
["'"] = "Balanced '",
["`"] = "Balanced `",
["("] = "Balanced (",
[")"] = "Balanced ) including white-space",
[">"] = "Balanced > including white-space",
["<lt>"] = "Balanced <",
["]"] = "Balanced ] including white-space",
["["] = "Balanced [",
["}"] = "Balanced } including white-space",
["{"] = "Balanced {",
["?"] = "User Prompt",
_ = "Underscore",
a = "Argument",
b = "Balanced ), ], }",
c = "Class",
d = "Digit(s)",
e = "Word in CamelCase & snake_case",
f = "Function",
g = "Entire file",
i = "Indent",
o = "Block, conditional, loop",
q = "Quote `, \", '",
t = "Tag",
u = "Use/call function & method",
U = "Use/call without dot in name",
local objects = {
{ " ", desc = "whitespace" },
{ '"', desc = 'balanced "' },
{ "'", desc = "balanced '" },
{ "(", desc = "balanced (" },
{ ")", desc = "balanced ) including white-space" },
{ "<", desc = "balanced <" },
{ ">", desc = "balanced > including white-space" },
{ "?", desc = "user prompt" },
{ "U", desc = "use/call without dot in name" },
{ "[", desc = "balanced [" },
{ "]", desc = "balanced ] including white-space" },
{ "_", desc = "underscore" },
{ "`", desc = "balanced `" },
{ "a", desc = "argument" },
{ "b", desc = "balanced )]}" },
{ "c", desc = "class" },
{ "d", desc = "digit(s)" },
{ "e", desc = "word in CamelCase & snake_case" },
{ "f", desc = "function" },
{ "g", desc = "entire file" },
{ "i", desc = "indent" },
{ "o", desc = "block, conditional, loop" },
{ "q", desc = "quote `\"'" },
{ "t", desc = "tag" },
{ "u", desc = "use/call function & method" },
{ "{", desc = "balanced {" },
{ "}", desc = "balanced } including white-space" },
}
local a = vim.deepcopy(i)
for k, v in pairs(a) do
a[k] = v:gsub(" including.*", "")
end
local ic = vim.deepcopy(i)
local ac = vim.deepcopy(a)
for key, name in pairs({ n = "Next", l = "Last" }) do
i[key] = vim.tbl_extend("force", { name = "Inside " .. name .. " textobject" }, ic)
a[key] = vim.tbl_extend("force", { name = "Around " .. name .. " textobject" }, ac)
local ret = { mode = { "o", "x" } }
for prefix, name in pairs({
i = "inside",
a = "around",
il = "last",
["in"] = "next",
al = "last",
an = "next",
}) do
ret[#ret + 1] = { prefix, group = name }
for _, obj in ipairs(objects) do
ret[#ret + 1] = { prefix .. obj[1], desc = obj.desc }
end
end
require("which-key").register({
mode = { "o", "x" },
i = i,
a = a,
})
require("which-key").add(ret, { notify = false })
end
---@param opts {skip_next: string, skip_ts: string[], skip_unbalanced: boolean, markdown: boolean}