mirror of
https://github.com/neovim/neovim.git
synced 2025-10-08 19:06:31 +00:00
API/nvim_set_keymap: remove mode-shortname aliases
Reduce the API surface-area a bit. No need to have aliases for a mode. ref #9924
This commit is contained in:
@@ -797,15 +797,14 @@ void modify_keymap(Buffer buffer, bool is_unmap, String mode, String lhs,
|
|||||||
mode_val = get_map_mode(&p, true); // mapmode-ic
|
mode_val = get_map_mode(&p, true); // mapmode-ic
|
||||||
} else {
|
} else {
|
||||||
mode_val = get_map_mode(&p, false);
|
mode_val = get_map_mode(&p, false);
|
||||||
if (mode_val == VISUAL + SELECTMODE + NORMAL + OP_PENDING) {
|
if ((mode_val == VISUAL + SELECTMODE + NORMAL + OP_PENDING)
|
||||||
// get_map_mode will treat "unrecognized" mode shortnames like "map"
|
&& mode.size > 0) {
|
||||||
// if it does, and the given shortname wasn't "m" or " ", then error
|
// get_map_mode() treats unrecognized mode shortnames as ":map".
|
||||||
if (STRNCMP(p, "m", 2) && STRNCMP(p, " ", 2)) {
|
// This is an error unless the given shortname was empty string "".
|
||||||
err_msg = "Invalid mode shortname: %s";
|
err_msg = "Invalid mode shortname: \"%s\"";
|
||||||
err_arg = (char *)p;
|
err_arg = (char *)p;
|
||||||
err_type = kErrorTypeValidation;
|
err_type = kErrorTypeValidation;
|
||||||
goto fail_with_message;
|
goto fail_with_message;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -316,15 +316,15 @@ end)
|
|||||||
describe('nvim_set_keymap, nvim_del_keymap', function()
|
describe('nvim_set_keymap, nvim_del_keymap', function()
|
||||||
before_each(clear)
|
before_each(clear)
|
||||||
|
|
||||||
-- generate_expected is truthy when we want to generate an expected output for
|
-- `generate_expected` is truthy: for generating an expected output for
|
||||||
-- maparg(); mapargs() won't take '!' as an input, though it will return '!'
|
-- maparg(), which does not accept "!" (though it returns "!" in its output
|
||||||
-- in its output if getting a mapping set with |:map!|
|
-- if getting a mapping set with |:map!|).
|
||||||
local function normalize_mapmode(mode, generate_expected)
|
local function normalize_mapmode(mode, generate_expected)
|
||||||
if not generate_expected and mode == '!' then
|
if not generate_expected and mode == '!' then
|
||||||
-- can't retrieve mapmode-ic mappings with '!', but can with 'i' or 'c'.
|
-- Cannot retrieve mapmode-ic mappings with "!", but can with "i" or "c".
|
||||||
mode = 'i'
|
mode = 'i'
|
||||||
elseif mode == '' or mode == ' ' or mode == 'm' then
|
elseif mode == '' then
|
||||||
mode = generate_expected and ' ' or 'm'
|
mode = generate_expected and ' ' or mode
|
||||||
end
|
end
|
||||||
return mode
|
return mode
|
||||||
end
|
end
|
||||||
@@ -355,13 +355,12 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
return to_return
|
return to_return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Retrieve a mapargs dict from neovim, if one exists
|
-- Gets a maparg() dict from Nvim, if one exists.
|
||||||
local function get_mapargs(mode, lhs)
|
local function get_mapargs(mode, lhs)
|
||||||
return funcs.maparg(lhs, normalize_mapmode(mode), false, true)
|
return funcs.maparg(lhs, normalize_mapmode(mode), false, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Test error handling
|
it('error on empty LHS', function()
|
||||||
it('throws errors when given empty lhs', function()
|
|
||||||
-- escape parentheses in lua string, else comparison fails erroneously
|
-- escape parentheses in lua string, else comparison fails erroneously
|
||||||
expect_err('Invalid %(empty%) LHS',
|
expect_err('Invalid %(empty%) LHS',
|
||||||
meths.set_keymap, '', '', 'rhs', {})
|
meths.set_keymap, '', '', 'rhs', {})
|
||||||
@@ -371,7 +370,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
expect_err('Invalid %(empty%) LHS', meths.del_keymap, '', '')
|
expect_err('Invalid %(empty%) LHS', meths.del_keymap, '', '')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('throws errors when given an lhs longer than MAXMAPLEN', function()
|
it('error if LHS longer than MAXMAPLEN', function()
|
||||||
-- assume MAXMAPLEN of 50 chars, as declared in vim.h
|
-- assume MAXMAPLEN of 50 chars, as declared in vim.h
|
||||||
local MAXMAPLEN = 50
|
local MAXMAPLEN = 50
|
||||||
local lhs = ''
|
local lhs = ''
|
||||||
@@ -421,22 +420,23 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
expect_err('Shortname is too long: xnoremap', meths.del_keymap, 'xnoremap', 'lhs')
|
expect_err('Shortname is too long: xnoremap', meths.del_keymap, 'xnoremap', 'lhs')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('throws errors when given unrecognized mode shortnames', function()
|
it('error on invalid mode shortname', function()
|
||||||
expect_err('Invalid mode shortname: ?',
|
expect_err('Invalid mode shortname: " "',
|
||||||
|
meths.set_keymap, ' ', 'lhs', 'rhs', {})
|
||||||
|
expect_err('Invalid mode shortname: "m"',
|
||||||
|
meths.set_keymap, 'm', 'lhs', 'rhs', {})
|
||||||
|
expect_err('Invalid mode shortname: "?"',
|
||||||
meths.set_keymap, '?', 'lhs', 'rhs', {})
|
meths.set_keymap, '?', 'lhs', 'rhs', {})
|
||||||
|
expect_err('Invalid mode shortname: "y"',
|
||||||
expect_err('Invalid mode shortname: y',
|
|
||||||
meths.set_keymap, 'y', 'lhs', 'rhs', {})
|
meths.set_keymap, 'y', 'lhs', 'rhs', {})
|
||||||
|
expect_err('Invalid mode shortname: "p"',
|
||||||
expect_err('Invalid mode shortname: p',
|
|
||||||
meths.set_keymap, 'p', 'lhs', 'rhs', {})
|
meths.set_keymap, 'p', 'lhs', 'rhs', {})
|
||||||
|
expect_err('Invalid mode shortname: "?"', meths.del_keymap, '?', 'lhs')
|
||||||
expect_err('Invalid mode shortname: ?', meths.del_keymap, '?', 'lhs')
|
expect_err('Invalid mode shortname: "y"', meths.del_keymap, 'y', 'lhs')
|
||||||
expect_err('Invalid mode shortname: y', meths.del_keymap, 'y', 'lhs')
|
expect_err('Invalid mode shortname: "p"', meths.del_keymap, 'p', 'lhs')
|
||||||
expect_err('Invalid mode shortname: p', meths.del_keymap, 'p', 'lhs')
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('throws errors when optnames are almost right', function()
|
it('error on invalid optnames', function()
|
||||||
expect_err('Invalid key: silentt',
|
expect_err('Invalid key: silentt',
|
||||||
meths.set_keymap, 'n', 'lhs', 'rhs', {silentt = true})
|
meths.set_keymap, 'n', 'lhs', 'rhs', {silentt = true})
|
||||||
expect_err('Invalid key: sidd',
|
expect_err('Invalid key: sidd',
|
||||||
@@ -445,7 +445,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
meths.set_keymap, 'n', 'lhs', 'rhs', {nowaiT = false})
|
meths.set_keymap, 'n', 'lhs', 'rhs', {nowaiT = false})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('does not recognize <buffer> as an option', function()
|
it('error on <buffer> option key', function()
|
||||||
expect_err('Invalid key: buffer',
|
expect_err('Invalid key: buffer',
|
||||||
meths.set_keymap, 'n', 'lhs', 'rhs', {buffer = true})
|
meths.set_keymap, 'n', 'lhs', 'rhs', {buffer = true})
|
||||||
end)
|
end)
|
||||||
@@ -462,7 +462,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Perform tests of basic functionality
|
-- Perform tests of basic functionality
|
||||||
it('can set ordinary mappings', function()
|
it('sets ordinary mappings', function()
|
||||||
meths.set_keymap('n', 'lhs', 'rhs', {})
|
meths.set_keymap('n', 'lhs', 'rhs', {})
|
||||||
eq(generate_mapargs('n', 'lhs', 'rhs'), get_mapargs('n', 'lhs'))
|
eq(generate_mapargs('n', 'lhs', 'rhs'), get_mapargs('n', 'lhs'))
|
||||||
|
|
||||||
@@ -470,7 +470,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
eq(generate_mapargs('v', 'lhs', 'rhs'), get_mapargs('v', 'lhs'))
|
eq(generate_mapargs('v', 'lhs', 'rhs'), get_mapargs('v', 'lhs'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('doesn\'t throw when lhs or rhs have leading/trailing WS', function()
|
it('does not throw when LHS or RHS have leading/trailing whitespace', function()
|
||||||
meths.set_keymap('n', ' lhs', 'rhs', {})
|
meths.set_keymap('n', ' lhs', 'rhs', {})
|
||||||
eq(generate_mapargs('n', '<Space><Space><Space>lhs', 'rhs'),
|
eq(generate_mapargs('n', '<Space><Space><Space>lhs', 'rhs'),
|
||||||
get_mapargs('n', ' lhs'))
|
get_mapargs('n', ' lhs'))
|
||||||
@@ -505,8 +505,8 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
-- Test some edge cases
|
-- Test some edge cases
|
||||||
it('accepts "!" and " " and "" as synonyms for mapmode-nvo', function()
|
it('"!" and empty string are synonyms for mapmode-nvo', function()
|
||||||
local nvo_shortnames = {'', ' ', '!'}
|
local nvo_shortnames = {'', '!'}
|
||||||
for _, name in ipairs(nvo_shortnames) do
|
for _, name in ipairs(nvo_shortnames) do
|
||||||
meths.set_keymap(name, 'lhs', 'rhs', {})
|
meths.set_keymap(name, 'lhs', 'rhs', {})
|
||||||
meths.del_keymap(name, 'lhs')
|
meths.del_keymap(name, 'lhs')
|
||||||
@@ -653,7 +653,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
-- Perform exhaustive tests of basic functionality
|
-- Perform exhaustive tests of basic functionality
|
||||||
local mapmodes = {'n', 'v', 'x', 's', 'o', '!', 'i', 'l', 'c', 't', ' ', ''}
|
local mapmodes = {'n', 'v', 'x', 's', 'o', '!', 'i', 'l', 'c', 't', ''}
|
||||||
for _, mapmode in ipairs(mapmodes) do
|
for _, mapmode in ipairs(mapmodes) do
|
||||||
it('can set/unset normal mappings in mapmode '..mapmode, function()
|
it('can set/unset normal mappings in mapmode '..mapmode, function()
|
||||||
meths.set_keymap(mapmode, 'lhs', 'rhs', {})
|
meths.set_keymap(mapmode, 'lhs', 'rhs', {})
|
||||||
|
Reference in New Issue
Block a user