diff options
Diffstat (limited to 'runtime/lua/vim/keymap.lua')
| -rw-r--r-- | runtime/lua/vim/keymap.lua | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/runtime/lua/vim/keymap.lua b/runtime/lua/vim/keymap.lua index 8464f68a37..94e1df0f31 100644 --- a/runtime/lua/vim/keymap.lua +++ b/runtime/lua/vim/keymap.lua @@ -10,7 +10,7 @@ local keymap = {} --- @inlinedoc --- --- Creates buffer-local mapping, `0` or `true` for current buffer. ---- @field buffer? integer|boolean +--- @field buf? integer|boolean --- --- Make the mapping recursive. Inverse of {noremap}. --- (Default: `false`) @@ -24,7 +24,7 @@ local keymap = {} --- -- Map "x" to a Lua function: --- vim.keymap.set('n', 'x', function() print('real lua function') end) --- -- Map "<leader>x" to multiple modes for the current buffer: ---- vim.keymap.set({'n', 'v'}, '<leader>x', vim.lsp.buf.references, { buffer = true }) +--- vim.keymap.set({'n', 'v'}, '<leader>x', vim.lsp.buf.references, { buf = true }) --- -- Map <Tab> to an expression (|:map-<expr>|): --- vim.keymap.set('i', '<Tab>', function() --- return vim.fn.pumvisible() == 1 and '<C-n>' or '<Tab>' @@ -83,14 +83,22 @@ function keymap.set(modes, lhs, rhs, opts) rhs = '' end - if opts.buffer then - local bufnr = opts.buffer == true and 0 or opts.buffer --[[@as integer]] - opts.buffer = nil ---@type integer? + local buf = opts.buf + opts.buf = nil + --- @cast opts +{buffer?:integer|boolean} + if opts.buffer ~= nil then + -- TODO(skewb1k): soft-deprecate `buffer` option in 0.13, remove in 0.15. + assert(buf == nil, "Conflict: 'buf' not allowed with 'buffer'") + buf = opts.buffer + opts.buffer = nil + end + + if buf then + buf = buf == true and 0 or buf for _, m in ipairs(modes) do - vim.api.nvim_buf_set_keymap(bufnr, m, lhs, rhs, opts) + vim.api.nvim_buf_set_keymap(buf, m, lhs, rhs, opts) end else - opts.buffer = nil for _, m in ipairs(modes) do vim.api.nvim_set_keymap(m, lhs, rhs, opts) end @@ -102,7 +110,7 @@ end --- --- Remove a mapping from the given buffer. --- When `0` or `true`, use the current buffer. ---- @field buffer? integer|boolean +--- @field buf? integer|boolean --- Remove an existing mapping. --- Examples: @@ -110,7 +118,7 @@ end --- ```lua --- vim.keymap.del('n', 'lhs') --- ---- vim.keymap.del({'n', 'i', 'v'}, '<leader>w', { buffer = 5 }) +--- vim.keymap.del({'n', 'i', 'v'}, '<leader>w', { buf = 5 }) --- ``` --- ---@param modes string|string[] @@ -126,18 +134,22 @@ function keymap.del(modes, lhs, opts) modes = type(modes) == 'string' and { modes } or modes --- @cast modes string[] - local buffer = false ---@type false|integer + local buf = opts.buf + --- @cast opts +{buffer?:integer|boolean} if opts.buffer ~= nil then - buffer = opts.buffer == true and 0 or opts.buffer --[[@as integer]] + -- TODO(skewb1k): soft-deprecate `buffer` option in 0.13, remove in 0.15. + assert(opts.buf == nil, "Conflict: 'buf' not allowed with 'buffer'") + buf = opts.buffer end - if buffer == false then + if buf then + buf = buf == true and 0 or buf for _, mode in ipairs(modes) do - vim.api.nvim_del_keymap(mode, lhs) + vim.api.nvim_buf_del_keymap(buf, mode, lhs) end else for _, mode in ipairs(modes) do - vim.api.nvim_buf_del_keymap(buffer, mode, lhs) + vim.api.nvim_del_keymap(mode, lhs) end end end |