aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/keymap_spec.lua
diff options
context:
space:
mode:
authortstsrt <41282711+tstsrt@users.noreply.github.com>2025-04-01 12:30:00 +0000
committerGitHub <noreply@github.com>2025-04-01 05:30:00 -0700
commitec18ebcb417bb9f2afc81d247db6993eaa48701f (patch)
treee48e5bedb7971c97589741705db18873b4fed2bd /test/functional/api/keymap_spec.lua
parent0e7479bb7637a21121b990cc960262a0d60196da (diff)
downloadrneovim-ec18ebcb417bb9f2afc81d247db6993eaa48701f.tar.gz
rneovim-ec18ebcb417bb9f2afc81d247db6993eaa48701f.tar.bz2
rneovim-ec18ebcb417bb9f2afc81d247db6993eaa48701f.zip
fix(api): nvim_set_keymap() throws error even in pcall() #33228
Problem: When `nvim_set_keymap` tries to overwrite a `<unique>` mapping, it throws an error even when called in `pcall`. Solution: src/nvim/mapping.c:buf_do_map no longer calls `semsg`. Its callers now decide whether to ignore the error, or use `semsg` (not caught)/`api_set_error` (caught by `pcall`).
Diffstat (limited to 'test/functional/api/keymap_spec.lua')
-rw-r--r--test/functional/api/keymap_spec.lua20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/functional/api/keymap_spec.lua b/test/functional/api/keymap_spec.lua
index acaccee4e5..2c44905274 100644
--- a/test/functional/api/keymap_spec.lua
+++ b/test/functional/api/keymap_spec.lua
@@ -1465,4 +1465,24 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
eq(1, exec_lua [[return GlobalCount]])
eq('\nNo mapping found', n.exec_capture('nmap <C-I>'))
end)
+
+ it('does not overwrite in <unique> mappings', function()
+ api.nvim_buf_set_keymap(0, 'i', 'lhs', 'rhs', {})
+ eq(
+ 'E227: Mapping already exists for lhs',
+ pcall_err(api.nvim_buf_set_keymap, 0, 'i', 'lhs', 'rhs', { unique = true })
+ )
+
+ api.nvim_buf_set_keymap(0, 'ia', 'lhs2', 'rhs2', {})
+ eq(
+ 'E226: Abbreviation already exists for lhs2',
+ pcall_err(api.nvim_buf_set_keymap, 0, 'ia', 'lhs2', 'rhs2', { unique = true })
+ )
+
+ api.nvim_set_keymap('n', 'lhs', 'rhs', {})
+ eq(
+ 'E225: Global mapping already exists for lhs',
+ pcall_err(api.nvim_buf_set_keymap, 0, 'n', 'lhs', 'rhs', { unique = true })
+ )
+ end)
end)