aboutsummaryrefslogtreecommitdiff
path: root/test/functional/vimscript/map_functions_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/vimscript/map_functions_spec.lua')
-rw-r--r--test/functional/vimscript/map_functions_spec.lua160
1 files changed, 88 insertions, 72 deletions
diff --git a/test/functional/vimscript/map_functions_spec.lua b/test/functional/vimscript/map_functions_spec.lua
index acba5e9708..59d427ca90 100644
--- a/test/functional/vimscript/map_functions_spec.lua
+++ b/test/functional/vimscript/map_functions_spec.lua
@@ -7,9 +7,8 @@ local exec = helpers.exec
local exec_lua = helpers.exec_lua
local expect = helpers.expect
local feed = helpers.feed
-local funcs = helpers.funcs
-local meths = helpers.meths
-local nvim = helpers.nvim
+local fn = helpers.fn
+local api = helpers.api
local source = helpers.source
local command = helpers.command
local exec_capture = helpers.exec_capture
@@ -19,65 +18,65 @@ describe('maparg()', function()
before_each(clear)
local foo_bar_map_table = {
- lhs='foo',
- lhsraw='foo',
- script=0,
- silent=0,
- rhs='bar',
- expr=0,
- sid=0,
- scriptversion=1,
- buffer=0,
- nowait=0,
- mode='n',
- mode_bits=0x01,
- abbr=0,
- noremap=1,
- lnum=0,
- }
+ lhs = 'foo',
+ lhsraw = 'foo',
+ script = 0,
+ silent = 0,
+ rhs = 'bar',
+ expr = 0,
+ sid = 0,
+ scriptversion = 1,
+ buffer = 0,
+ nowait = 0,
+ mode = 'n',
+ mode_bits = 0x01,
+ abbr = 0,
+ noremap = 1,
+ lnum = 0,
+ }
it('returns a dictionary', function()
- nvim('command', 'nnoremap foo bar')
- eq('bar', funcs.maparg('foo'))
- eq(foo_bar_map_table, funcs.maparg('foo', 'n', false, true))
+ command('nnoremap foo bar')
+ eq('bar', fn.maparg('foo'))
+ eq(foo_bar_map_table, fn.maparg('foo', 'n', false, true))
end)
it('returns 1 for silent when <silent> is used', function()
- nvim('command', 'nnoremap <silent> foo bar')
- eq(1, funcs.maparg('foo', 'n', false, true)['silent'])
+ command('nnoremap <silent> foo bar')
+ eq(1, fn.maparg('foo', 'n', false, true)['silent'])
- nvim('command', 'nnoremap baz bat')
- eq(0, funcs.maparg('baz', 'n', false, true)['silent'])
+ command('nnoremap baz bat')
+ eq(0, fn.maparg('baz', 'n', false, true)['silent'])
end)
it('returns an empty string when no map is present', function()
- eq('', funcs.maparg('not a mapping'))
+ eq('', fn.maparg('not a mapping'))
end)
it('returns an empty dictionary when no map is present and dict is requested', function()
- eq({}, funcs.maparg('not a mapping', 'n', false, true))
+ eq({}, fn.maparg('not a mapping', 'n', false, true))
end)
it('returns the same value for noremap and <script>', function()
- nvim('command', 'inoremap <script> hello world')
- nvim('command', 'inoremap this that')
+ command('inoremap <script> hello world')
+ command('inoremap this that')
eq(
- funcs.maparg('hello', 'i', false, true)['noremap'],
- funcs.maparg('this', 'i', false, true)['noremap']
- )
+ fn.maparg('hello', 'i', false, true)['noremap'],
+ fn.maparg('this', 'i', false, true)['noremap']
+ )
end)
it('returns a boolean for buffer', function()
-- Open enough windows to know we aren't on buffer number 1
- nvim('command', 'new')
- nvim('command', 'new')
- nvim('command', 'new')
- nvim('command', 'cnoremap <buffer> this that')
- eq(1, funcs.maparg('this', 'c', false, true)['buffer'])
+ command('new')
+ command('new')
+ command('new')
+ command('cnoremap <buffer> this that')
+ eq(1, fn.maparg('this', 'c', false, true)['buffer'])
-- Global will return 0 always
- nvim('command', 'nnoremap other another')
- eq(0, funcs.maparg('other', 'n', false, true)['buffer'])
+ command('nnoremap other another')
+ eq(0, fn.maparg('other', 'n', false, true)['buffer'])
end)
it('returns script numbers', function()
@@ -88,8 +87,8 @@ describe('maparg()', function()
nnoremap fizz :call <SID>maparg_test_function()<CR>
]])
- eq(1, funcs.maparg('fizz', 'n', false, true)['sid'])
- eq('testing', nvim('call_function', '<SNR>1_maparg_test_function', {}))
+ eq(1, fn.maparg('fizz', 'n', false, true)['sid'])
+ eq('testing', api.nvim_call_function('<SNR>1_maparg_test_function', {}))
end)
it('works with <F12> and others', function()
@@ -104,7 +103,7 @@ describe('maparg()', function()
]])
eq(1, eval('g:maparg_test_var'))
- eq(':let g:maparg_test_var = 1<CR>', funcs.maparg('<F12>', 'n', false, true)['rhs'])
+ eq(':let g:maparg_test_var = 1<CR>', fn.maparg('<F12>', 'n', false, true)['rhs'])
end)
it('works with <expr>', function()
@@ -127,7 +126,7 @@ describe('maparg()', function()
]])
eq(1, eval('g:counter'))
- local map_dict = funcs.maparg('<C-L>', 'i', false, true)
+ local map_dict = fn.maparg('<C-L>', 'i', false, true)
eq(1, map_dict['expr'])
eq('i', map_dict['mode'])
end)
@@ -135,7 +134,7 @@ describe('maparg()', function()
it('works with combining characters', function()
-- Using addacutes to make combining character better visible
local function ac(s)
- local acute = '\204\129' -- U+0301 COMBINING ACUTE ACCENT
+ local acute = '\204\129' -- U+0301 COMBINING ACUTE ACCENT
local ret = s:gsub('`', acute)
return ret
end
@@ -144,10 +143,10 @@ describe('maparg()', function()
nnoremap c` d
nnoremap e` f`
]]))
- eq(ac('b`'), funcs.maparg(ac('a')))
- eq(ac(''), funcs.maparg(ac('c')))
- eq(ac('d'), funcs.maparg(ac('c`')))
- eq(ac('f`'), funcs.maparg(ac('e`')))
+ eq(ac('b`'), fn.maparg(ac('a')))
+ eq(ac(''), fn.maparg(ac('c')))
+ eq(ac('d'), fn.maparg(ac('c`')))
+ eq(ac('f`'), fn.maparg(ac('e`')))
local function acmap(lhs, rhs)
return {
@@ -170,35 +169,45 @@ describe('maparg()', function()
}
end
- eq({}, funcs.maparg(ac('c'), 'n', 0, 1))
- eq(acmap('a', 'b`'), funcs.maparg(ac('a'), 'n', 0, 1))
- eq(acmap('c`', 'd'), funcs.maparg(ac('c`'), 'n', 0, 1))
- eq(acmap('e`', 'f`'), funcs.maparg(ac('e`'), 'n', 0, 1))
+ eq({}, fn.maparg(ac('c'), 'n', 0, 1))
+ eq(acmap('a', 'b`'), fn.maparg(ac('a'), 'n', 0, 1))
+ eq(acmap('c`', 'd'), fn.maparg(ac('c`'), 'n', 0, 1))
+ eq(acmap('e`', 'f`'), fn.maparg(ac('e`'), 'n', 0, 1))
end)
end)
describe('mapset()', function()
before_each(clear)
+ it('can restore mapping with backslash in lhs', function()
+ api.nvim_set_keymap('n', '\\ab', 'a', {})
+ eq('\nn \\ab a', exec_capture('nmap \\ab'))
+ local mapargs = fn.maparg('\\ab', 'n', false, true)
+ api.nvim_set_keymap('n', '\\ab', 'b', {})
+ eq('\nn \\ab b', exec_capture('nmap \\ab'))
+ fn.mapset('n', false, mapargs)
+ eq('\nn \\ab a', exec_capture('nmap \\ab'))
+ end)
+
it('can restore mapping description from the dict returned by maparg()', function()
- meths.set_keymap('n', 'lhs', 'rhs', {desc = 'map description'})
- eq('\nn lhs rhs\n map description', exec_capture("nmap lhs"))
- local mapargs = funcs.maparg('lhs', 'n', false, true)
- meths.set_keymap('n', 'lhs', 'rhs', {desc = 'MAP DESCRIPTION'})
- eq('\nn lhs rhs\n MAP DESCRIPTION', exec_capture("nmap lhs"))
- funcs.mapset('n', false, mapargs)
- eq('\nn lhs rhs\n map description', exec_capture("nmap lhs"))
+ api.nvim_set_keymap('n', 'lhs', 'rhs', { desc = 'map description' })
+ eq('\nn lhs rhs\n map description', exec_capture('nmap lhs'))
+ local mapargs = fn.maparg('lhs', 'n', false, true)
+ api.nvim_set_keymap('n', 'lhs', 'rhs', { desc = 'MAP DESCRIPTION' })
+ eq('\nn lhs rhs\n MAP DESCRIPTION', exec_capture('nmap lhs'))
+ fn.mapset('n', false, mapargs)
+ eq('\nn lhs rhs\n map description', exec_capture('nmap lhs'))
end)
it('can restore "replace_keycodes" from the dict returned by maparg()', function()
- meths.set_keymap('i', 'foo', [['<l' .. 't>']], {expr = true, replace_keycodes = true})
+ api.nvim_set_keymap('i', 'foo', [['<l' .. 't>']], { expr = true, replace_keycodes = true })
feed('Afoo')
expect('<')
- local mapargs = funcs.maparg('foo', 'i', false, true)
- meths.set_keymap('i', 'foo', [['<l' .. 't>']], {expr = true})
+ local mapargs = fn.maparg('foo', 'i', false, true)
+ api.nvim_set_keymap('i', 'foo', [['<l' .. 't>']], { expr = true })
feed('foo')
expect('<<lt>')
- funcs.mapset('i', false, mapargs)
+ fn.mapset('i', false, mapargs)
feed('foo')
expect('<<lt><')
end)
@@ -208,23 +217,26 @@ describe('mapset()', function()
eq('\ni foo * bar', exec_capture('iabbr foo'))
feed('ifoo ')
expect('bar ')
- local mapargs = funcs.maparg('foo', 'i', true, true)
+ local mapargs = fn.maparg('foo', 'i', true, true)
command('inoreabbr foo BAR')
eq('\ni foo * BAR', exec_capture('iabbr foo'))
feed('foo ')
expect('bar BAR ')
- funcs.mapset('i', true, mapargs)
+ fn.mapset('i', true, mapargs)
eq('\ni foo * bar', exec_capture('iabbr foo'))
feed('foo<Esc>')
expect('bar BAR bar')
end)
it('can restore Lua callback from the dict returned by maparg()', function()
- eq(0, exec_lua([[
+ eq(
+ 0,
+ exec_lua([[
GlobalCount = 0
vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]]))
+ ]])
+ )
feed('asdf')
eq(1, exec_lua([[return GlobalCount]]))
@@ -252,9 +264,13 @@ describe('mapset()', function()
end)
it('does not leak memory if lhs is missing', function()
- eq('Vim:E460: Entries missing in mapset() dict argument',
- pcall_err(exec_lua, [[vim.fn.mapset('n', false, {rhs = 'foo'})]]))
- eq('Vim:E460: Entries missing in mapset() dict argument',
- pcall_err(exec_lua, [[vim.fn.mapset('n', false, {callback = function() end})]]))
+ eq(
+ 'Vim:E460: Entries missing in mapset() dict argument',
+ pcall_err(exec_lua, [[vim.fn.mapset('n', false, {rhs = 'foo'})]])
+ )
+ eq(
+ 'Vim:E460: Entries missing in mapset() dict argument',
+ pcall_err(exec_lua, [[vim.fn.mapset('n', false, {callback = function() end})]])
+ )
end)
end)