mirror of
https://github.com/LazyVim/LazyVim.git
synced 2025-06-21 16:39:06 +02:00
feat: new mappings format for which-key v3. Forgot to push :)
This commit is contained in:
parent
4a6c0c2850
commit
702471e454
5 changed files with 94 additions and 80 deletions
|
@ -162,32 +162,47 @@ return {
|
||||||
{
|
{
|
||||||
"folke/which-key.nvim",
|
"folke/which-key.nvim",
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
|
opts_extend = { "spec" },
|
||||||
opts = {
|
opts = {
|
||||||
plugins = { spelling = true },
|
defaults = {},
|
||||||
defaults = {
|
spec = {
|
||||||
mode = { "n", "v" },
|
{
|
||||||
["g"] = { name = "+goto" },
|
mode = { "n", "v" },
|
||||||
["gs"] = { name = "+surround" },
|
{ "<leader><tab>", group = "tabs" },
|
||||||
["z"] = { name = "+fold" },
|
{ "<leader>b", group = "buffer" },
|
||||||
["]"] = { name = "+next" },
|
{ "<leader>c", group = "code" },
|
||||||
["["] = { name = "+prev" },
|
{ "<leader>f", group = "file/find" },
|
||||||
["<leader><tab>"] = { name = "+tabs" },
|
{ "<leader>g", group = "git" },
|
||||||
["<leader>b"] = { name = "+buffer" },
|
{ "<leader>gh", group = "hunks" },
|
||||||
["<leader>c"] = { name = "+code" },
|
{ "<leader>q", group = "quit/session" },
|
||||||
["<leader>f"] = { name = "+file/find" },
|
{ "<leader>s", group = "search" },
|
||||||
["<leader>g"] = { name = "+git" },
|
{ "<leader>u", group = "ui" },
|
||||||
["<leader>gh"] = { name = "+hunks", ["_"] = "which_key_ignore" },
|
{ "<leader>w", group = "windows" },
|
||||||
["<leader>q"] = { name = "+quit/session" },
|
{ "<leader>x", group = "diagnostics/quickfix" },
|
||||||
["<leader>s"] = { name = "+search" },
|
{ "[", group = "prev" },
|
||||||
["<leader>u"] = { name = "+ui" },
|
{ "]", group = "next" },
|
||||||
["<leader>w"] = { name = "+windows" },
|
{ "g", group = "goto" },
|
||||||
["<leader>x"] = { name = "+diagnostics/quickfix" },
|
{ "gs", group = "surround" },
|
||||||
|
{ "z", group = "fold" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>?",
|
||||||
|
function()
|
||||||
|
require("which-key").show({ global = false })
|
||||||
|
end,
|
||||||
|
desc = "Buffer Local Keymaps (which-key)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
local wk = require("which-key")
|
local wk = require("which-key")
|
||||||
wk.setup(opts)
|
wk.setup(opts)
|
||||||
wk.register(opts.defaults)
|
if not vim.tbl_isempty(opts.defaults) then
|
||||||
|
LazyVim.warn("which-key: opts.defaults is deprecated. Please use opts.spec instead.")
|
||||||
|
wk.register(opts.defaults)
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,9 @@ return {
|
||||||
"folke/which-key.nvim",
|
"folke/which-key.nvim",
|
||||||
optional = true,
|
optional = true,
|
||||||
opts = {
|
opts = {
|
||||||
defaults = { ["<leader>o"] = { name = "+overseer" } },
|
spec = {
|
||||||
|
{ "<leader>o", group = "overseer" },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -100,6 +100,7 @@ return {
|
||||||
headline_highlights = {},
|
headline_highlights = {},
|
||||||
-- disable bullets for now. See https://github.com/lukas-reineke/headlines.nvim/issues/66
|
-- disable bullets for now. See https://github.com/lukas-reineke/headlines.nvim/issues/66
|
||||||
bullets = {},
|
bullets = {},
|
||||||
|
quote_string = false,
|
||||||
}
|
}
|
||||||
for i = 1, 6 do
|
for i = 1, 6 do
|
||||||
local hl = "Headline" .. i
|
local hl = "Headline" .. i
|
||||||
|
|
|
@ -21,22 +21,19 @@ return {
|
||||||
|
|
||||||
-- Increase the width of which-key to handle the longer r-nvim descriptions
|
-- Increase the width of which-key to handle the longer r-nvim descriptions
|
||||||
local wk = require("which-key")
|
local wk = require("which-key")
|
||||||
-- Workaround from https://github.com/folke/which-key.nvim/issues/514#issuecomment-1987286901
|
wk.add({
|
||||||
wk.register({
|
{ "<localleader>a", group = "all" },
|
||||||
["<localleader>"] = {
|
{ "<localleader>b", group = "between marks" },
|
||||||
a = { name = "+(a)ll", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>c", group = "chunks" },
|
||||||
b = { name = "+(b)etween marks", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>f", group = "functions" },
|
||||||
c = { name = "+(c)hunks", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>g", group = "goto" },
|
||||||
f = { name = "+(f)unctions", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>k", group = "knit" },
|
||||||
g = { name = "+(g)oto", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>p", group = "paragraph" },
|
||||||
k = { name = "+(k)nit", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>q", group = "quarto" },
|
||||||
p = { name = "+(p)aragraph", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>r", group = "r general" },
|
||||||
q = { name = "+(q)uarto", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>s", group = "split or send" },
|
||||||
r = { name = "+(r) general", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>t", group = "terminal" },
|
||||||
s = { name = "+(s)plit or (s)end", ["🚫"] = "which_key_ignore" },
|
{ "<localleader>v", group = "view" },
|
||||||
t = { name = "+(t)erminal", ["🚫"] = "which_key_ignore" },
|
|
||||||
v = { name = "+(v)iew", ["🚫"] = "which_key_ignore" },
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
|
@ -61,52 +61,51 @@ end
|
||||||
|
|
||||||
-- register all text objects with which-key
|
-- register all text objects with which-key
|
||||||
function M.ai_whichkey()
|
function M.ai_whichkey()
|
||||||
---@type table<string, string|table>
|
local objects = {
|
||||||
local i = {
|
{ " ", desc = "whitespace" },
|
||||||
[" "] = "Whitespace",
|
{ '"', desc = 'balanced "' },
|
||||||
['"'] = 'Balanced "',
|
{ "'", desc = "balanced '" },
|
||||||
["'"] = "Balanced '",
|
{ "(", desc = "balanced (" },
|
||||||
["`"] = "Balanced `",
|
{ ")", desc = "balanced ) including white-space" },
|
||||||
["("] = "Balanced (",
|
{ "<", desc = "balanced <" },
|
||||||
[")"] = "Balanced ) including white-space",
|
{ ">", desc = "balanced > including white-space" },
|
||||||
[">"] = "Balanced > including white-space",
|
{ "?", desc = "user prompt" },
|
||||||
["<lt>"] = "Balanced <",
|
{ "U", desc = "use/call without dot in name" },
|
||||||
["]"] = "Balanced ] including white-space",
|
{ "[", desc = "balanced [" },
|
||||||
["["] = "Balanced [",
|
{ "]", desc = "balanced ] including white-space" },
|
||||||
["}"] = "Balanced } including white-space",
|
{ "_", desc = "underscore" },
|
||||||
["{"] = "Balanced {",
|
{ "`", desc = "balanced `" },
|
||||||
["?"] = "User Prompt",
|
{ "a", desc = "argument" },
|
||||||
_ = "Underscore",
|
{ "b", desc = "balanced )]}" },
|
||||||
a = "Argument",
|
{ "c", desc = "class" },
|
||||||
b = "Balanced ), ], }",
|
{ "d", desc = "digit(s)" },
|
||||||
c = "Class",
|
{ "e", desc = "word in CamelCase & snake_case" },
|
||||||
d = "Digit(s)",
|
{ "f", desc = "function" },
|
||||||
e = "Word in CamelCase & snake_case",
|
{ "g", desc = "entire file" },
|
||||||
f = "Function",
|
{ "i", desc = "indent" },
|
||||||
g = "Entire file",
|
{ "o", desc = "block, conditional, loop" },
|
||||||
i = "Indent",
|
{ "q", desc = "quote `\"'" },
|
||||||
o = "Block, conditional, loop",
|
{ "t", desc = "tag" },
|
||||||
q = "Quote `, \", '",
|
{ "u", desc = "use/call function & method" },
|
||||||
t = "Tag",
|
{ "{", desc = "balanced {" },
|
||||||
u = "Use/call function & method",
|
{ "}", desc = "balanced } including white-space" },
|
||||||
U = "Use/call without dot in name",
|
|
||||||
}
|
}
|
||||||
local a = vim.deepcopy(i)
|
|
||||||
for k, v in pairs(a) do
|
|
||||||
a[k] = v:gsub(" including.*", "")
|
|
||||||
end
|
|
||||||
|
|
||||||
local ic = vim.deepcopy(i)
|
local ret = { mode = { "o", "x" } }
|
||||||
local ac = vim.deepcopy(a)
|
for prefix, name in pairs({
|
||||||
for key, name in pairs({ n = "Next", l = "Last" }) do
|
i = "inside",
|
||||||
i[key] = vim.tbl_extend("force", { name = "Inside " .. name .. " textobject" }, ic)
|
a = "around",
|
||||||
a[key] = vim.tbl_extend("force", { name = "Around " .. name .. " textobject" }, ac)
|
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
|
end
|
||||||
require("which-key").register({
|
require("which-key").add(ret, { notify = false })
|
||||||
mode = { "o", "x" },
|
|
||||||
i = i,
|
|
||||||
a = a,
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param opts {skip_next: string, skip_ts: string[], skip_unbalanced: boolean, markdown: boolean}
|
---@param opts {skip_next: string, skip_ts: string[], skip_unbalanced: boolean, markdown: boolean}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue