aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/keymap_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/api/keymap_spec.lua')
-rw-r--r--test/functional/api/keymap_spec.lua203
1 files changed, 129 insertions, 74 deletions
diff --git a/test/functional/api/keymap_spec.lua b/test/functional/api/keymap_spec.lua
index 0decd710e9..995711507f 100644
--- a/test/functional/api/keymap_spec.lua
+++ b/test/functional/api/keymap_spec.lua
@@ -1,17 +1,19 @@
-local helpers = require('test.functional.helpers')(after_each)
-
-local clear = helpers.clear
-local command = helpers.command
-local eq, neq = helpers.eq, helpers.neq
-local exec_lua = helpers.exec_lua
-local exec = helpers.exec
-local feed = helpers.feed
-local fn = helpers.fn
-local api = helpers.api
-local source = helpers.source
-local pcall_err = helpers.pcall_err
-
-local shallowcopy = helpers.shallowcopy
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
+
+local clear = n.clear
+local command = n.command
+local eq, neq = t.eq, t.neq
+local exec_lua = n.exec_lua
+local exec = n.exec
+local feed = n.feed
+local fn = n.fn
+local api = n.api
+local matches = t.matches
+local source = n.source
+local pcall_err = t.pcall_err
+
+local shallowcopy = t.shallowcopy
local sleep = vim.uv.sleep
local sid_api_client = -9
@@ -398,7 +400,9 @@ describe('nvim_get_keymap', function()
0,
exec_lua([[
GlobalCount = 0
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]])
)
@@ -738,7 +742,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
end
end
- it('can set mappings containing literal keycodes', function()
+ it('can set mappings containing C0 control codes', function()
api.nvim_set_keymap('n', '\n\r\n', 'rhs', {})
local expected = generate_mapargs('n', '<NL><CR><NL>', 'rhs')
eq(expected, get_mapargs('n', '<NL><CR><NL>'))
@@ -951,7 +955,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -963,34 +969,38 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
it(':map command shows lua mapping correctly', function()
exec_lua [[
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() print('jkl;') end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() print('jkl;') end,
+ })
]]
- assert.truthy(
- string.match(
- exec_lua [[return vim.api.nvim_exec2(':nmap asdf', { output = true }).output]],
- '^\nn asdf <Lua %d+>'
- )
+ matches(
+ '^\nn asdf <Lua %d+>',
+ exec_lua [[return vim.api.nvim_exec2(':nmap asdf', { output = true }).output]]
)
end)
it('mapcheck() returns lua mapping correctly', function()
exec_lua [[
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() print('jkl;') end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() print('jkl;') end,
+ })
]]
- assert.truthy(string.match(fn.mapcheck('asdf', 'n'), '^<Lua %d+>'))
+ matches('^<Lua %d+>', fn.mapcheck('asdf', 'n'))
end)
- it('maparg() returns lua mapping correctly', function()
+ it('maparg() and maplist() return lua mapping correctly', function()
eq(
0,
exec_lua([[
GlobalCount = 0
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]])
)
- assert.truthy(string.match(fn.maparg('asdf', 'n'), '^<Lua %d+>'))
+ matches('^<Lua %d+>', fn.maparg('asdf', 'n'))
local mapargs = fn.maparg('asdf', 'n', false, true)
mapargs.callback = nil
@@ -1010,11 +1020,20 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
call maparg('asdf', 'n', v:false, v:true).callback()
]])
eq(2, exec_lua([[return GlobalCount]]))
+
+ api.nvim_eval([[
+ maplist()->filter({_, m -> m.lhs == 'asdf'})->foreach({_, m -> m.callback()})
+ ]])
+ eq(3, exec_lua([[return GlobalCount]]))
end)
it('can make lua expr mappings replacing keycodes', function()
exec_lua [[
- vim.api.nvim_set_keymap('n', 'aa', '', {callback = function() return '<Insert>π<C-V><M-π>foo<lt><Esc>' end, expr = true, replace_keycodes = true })
+ vim.api.nvim_set_keymap('n', 'aa', '', {
+ callback = function() return '<Insert>π<C-V><M-π>foo<lt><Esc>' end,
+ expr = true,
+ replace_keycodes = true,
+ })
]]
feed('aa')
@@ -1024,7 +1043,10 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
it('can make lua expr mappings without replacing keycodes', function()
exec_lua [[
- vim.api.nvim_set_keymap('i', 'aa', '', {callback = function() return '<space>' end, expr = true })
+ vim.api.nvim_set_keymap('i', 'aa', '', {
+ callback = function() return '<space>' end,
+ expr = true,
+ })
]]
feed('iaa<esc>')
@@ -1034,7 +1056,10 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
it('lua expr mapping returning nil is equivalent to returning an empty string', function()
exec_lua [[
- vim.api.nvim_set_keymap('i', 'aa', '', {callback = function() return nil end, expr = true })
+ vim.api.nvim_set_keymap('i', 'aa', '', {
+ callback = function() return nil end,
+ expr = true,
+ })
]]
feed('iaa<esc>')
@@ -1047,7 +1072,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
0,
exec_lua [[
VisibleCount = 0
- vim.api.nvim_set_keymap('i', '<F2>', '', {callback = function() VisibleCount = VisibleCount + vim.fn.pumvisible() end})
+ vim.api.nvim_set_keymap('i', '<F2>', '', {
+ callback = function() VisibleCount = VisibleCount + vim.fn.pumvisible() end,
+ })
return VisibleCount
]]
)
@@ -1060,7 +1087,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
0,
exec_lua [[
OpCount = 0
- vim.api.nvim_set_keymap('o', '<F2>', '', {callback = function() OpCount = OpCount + 1 end})
+ vim.api.nvim_set_keymap('o', '<F2>', '', {
+ callback = function() OpCount = OpCount + 1 end,
+ })
return OpCount
]]
)
@@ -1075,7 +1104,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -1085,7 +1116,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount - 1 end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount - 1 end,
+ })
]]
feed('asdf\n')
@@ -1098,7 +1131,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_set_keymap('n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -1107,14 +1142,12 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq(1, exec_lua [[return GlobalCount]])
- exec_lua [[
- vim.api.nvim_del_keymap('n', 'asdf' )
- ]]
+ exec_lua [[vim.api.nvim_del_keymap('n', 'asdf' )]]
feed('asdf\n')
eq(1, exec_lua [[return GlobalCount]])
- eq('\nNo mapping found', helpers.exec_capture('nmap asdf'))
+ eq('\nNo mapping found', n.exec_capture('nmap asdf'))
end)
it('no double-free when unmapping simplifiable lua mappings', function()
@@ -1122,7 +1155,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_set_keymap('n', '<C-I>', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_set_keymap('n', '<C-I>', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -1131,29 +1166,30 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq(1, exec_lua [[return GlobalCount]])
- exec_lua [[
- vim.api.nvim_del_keymap('n', '<C-I>')
- ]]
+ exec_lua [[vim.api.nvim_del_keymap('n', '<C-I>')]]
feed('<C-I>\n')
eq(1, exec_lua [[return GlobalCount]])
- eq('\nNo mapping found', helpers.exec_capture('nmap <C-I>'))
+ eq('\nNo mapping found', n.exec_capture('nmap <C-I>'))
end)
it('can set descriptions on mappings', function()
api.nvim_set_keymap('n', 'lhs', 'rhs', { desc = 'map description' })
eq(generate_mapargs('n', 'lhs', 'rhs', { desc = 'map description' }), get_mapargs('n', 'lhs'))
- eq('\nn lhs rhs\n map description', helpers.exec_capture('nmap lhs'))
+ eq('\nn lhs rhs\n map description', n.exec_capture('nmap lhs'))
end)
it('can define !-mode abbreviations with lua callbacks', function()
exec_lua [[
GlobalCount = 0
- vim.api.nvim_set_keymap('!a', 'foo', '', {expr = true, callback = function()
- GlobalCount = GlobalCount + 1
- return tostring(GlobalCount)
- end})
+ vim.api.nvim_set_keymap('!a', 'foo', '', {
+ expr = true,
+ callback = function()
+ GlobalCount = GlobalCount + 1
+ return tostring(GlobalCount)
+ end,
+ })
]]
feed 'iThe foo and the bar and the foo again<esc>'
@@ -1166,10 +1202,13 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
it('can define insert mode abbreviations with lua callbacks', function()
exec_lua [[
GlobalCount = 0
- vim.api.nvim_set_keymap('ia', 'foo', '', {expr = true, callback = function()
- GlobalCount = GlobalCount + 1
- return tostring(GlobalCount)
- end})
+ vim.api.nvim_set_keymap('ia', 'foo', '', {
+ expr = true,
+ callback = function()
+ GlobalCount = GlobalCount + 1
+ return tostring(GlobalCount)
+ end,
+ })
]]
feed 'iThe foo and the bar and the foo again<esc>'
@@ -1182,10 +1221,13 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
it('can define cmdline mode abbreviations with lua callbacks', function()
exec_lua [[
GlobalCount = 0
- vim.api.nvim_set_keymap('ca', 'foo', '', {expr = true, callback = function()
- GlobalCount = GlobalCount + 1
- return tostring(GlobalCount)
- end})
+ vim.api.nvim_set_keymap('ca', 'foo', '', {
+ expr = true,
+ callback = function()
+ GlobalCount = GlobalCount + 1
+ return tostring(GlobalCount)
+ end,
+ })
]]
feed 'iThe foo and the bar and the foo again<esc>'
@@ -1290,7 +1332,7 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
it('does not crash when setting mapping in a non-existing buffer #13541', function()
pcall_err(api.nvim_buf_set_keymap, 100, '', 'lsh', 'irhs<Esc>', {})
- helpers.assert_alive()
+ n.assert_alive()
end)
it('can make lua mappings', function()
@@ -1298,7 +1340,9 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -1310,7 +1354,11 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
it('can make lua expr mappings replacing keycodes', function()
exec_lua [[
- vim.api.nvim_buf_set_keymap(0, 'n', 'aa', '', {callback = function() return '<Insert>π<C-V><M-π>foo<lt><Esc>' end, expr = true, replace_keycodes = true })
+ vim.api.nvim_buf_set_keymap(0, 'n', 'aa', '', {
+ callback = function() return '<Insert>π<C-V><M-π>foo<lt><Esc>' end,
+ expr = true,
+ replace_keycodes = true,
+ })
]]
feed('aa')
@@ -1320,7 +1368,10 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
it('can make lua expr mappings without replacing keycodes', function()
exec_lua [[
- vim.api.nvim_buf_set_keymap(0, 'i', 'aa', '', {callback = function() return '<space>' end, expr = true })
+ vim.api.nvim_buf_set_keymap(0, 'i', 'aa', '', {
+ callback = function() return '<space>' end,
+ expr = true,
+ })
]]
feed('iaa<esc>')
@@ -1333,7 +1384,9 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -1343,7 +1396,9 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
- vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount - 1 end })
+ vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount - 1 end,
+ })
]]
feed('asdf\n')
@@ -1356,7 +1411,9 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -1365,14 +1422,12 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
eq(1, exec_lua [[return GlobalCount]])
- exec_lua [[
- vim.api.nvim_buf_del_keymap(0, 'n', 'asdf' )
- ]]
+ exec_lua [[vim.api.nvim_buf_del_keymap(0, 'n', 'asdf' )]]
feed('asdf\n')
eq(1, exec_lua [[return GlobalCount]])
- eq('\nNo mapping found', helpers.exec_capture('nmap asdf'))
+ eq('\nNo mapping found', n.exec_capture('nmap asdf'))
end)
it('no double-free when unmapping simplifiable lua mappings', function()
@@ -1380,7 +1435,9 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
0,
exec_lua [[
GlobalCount = 0
- vim.api.nvim_buf_set_keymap(0, 'n', '<C-I>', '', {callback = function() GlobalCount = GlobalCount + 1 end })
+ vim.api.nvim_buf_set_keymap(0, 'n', '<C-I>', '', {
+ callback = function() GlobalCount = GlobalCount + 1 end,
+ })
return GlobalCount
]]
)
@@ -1389,13 +1446,11 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
eq(1, exec_lua [[return GlobalCount]])
- exec_lua [[
- vim.api.nvim_buf_del_keymap(0, 'n', '<C-I>')
- ]]
+ exec_lua [[vim.api.nvim_buf_del_keymap(0, 'n', '<C-I>')]]
feed('<C-I>\n')
eq(1, exec_lua [[return GlobalCount]])
- eq('\nNo mapping found', helpers.exec_capture('nmap <C-I>'))
+ eq('\nNo mapping found', n.exec_capture('nmap <C-I>'))
end)
end)