fix(mapset): remove existing abbreviation of same lhs (#20320)

This commit is contained in:
zeertzjq
2022-09-24 21:07:18 +08:00
committed by GitHub
parent db056de29a
commit 291a649632
2 changed files with 21 additions and 3 deletions

View File

@@ -12,6 +12,7 @@ local meths = helpers.meths
local nvim = helpers.nvim
local source = helpers.source
local command = helpers.command
local exec_capture = helpers.exec_capture
local pcall_err = helpers.pcall_err
describe('maparg()', function()
@@ -178,8 +179,9 @@ describe('mapset()', function()
eq('\nn lhs rhs\n map description',
helpers.exec_capture("nmap lhs"))
local mapargs = funcs.maparg('lhs', 'n', false, true)
meths.del_keymap('n', 'lhs')
eq('\nNo mapping found', helpers.exec_capture("nmap lhs"))
meths.set_keymap('n', 'lhs', 'rhs', {desc = 'MAP DESCRIPTION'})
eq('\nn lhs rhs\n MAP DESCRIPTION',
helpers.exec_capture("nmap lhs"))
funcs.mapset('n', false, mapargs)
eq('\nn lhs rhs\n map description',
helpers.exec_capture("nmap lhs"))
@@ -198,6 +200,22 @@ describe('mapset()', function()
expect('<<lt><')
end)
it('replaces an abbreviation of the same lhs #20320', function()
command('inoreabbr foo bar')
eq('\ni foo * bar', exec_capture('iabbr foo'))
feed('ifoo ')
expect('bar ')
local mapargs = funcs.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)
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([[
GlobalCount = 0