mirror of
https://github.com/neovim/neovim.git
synced 2025-09-19 01:38:16 +00:00
fix(mapset): remove existing abbreviation of same lhs (#20320)
This commit is contained in:
@@ -2199,7 +2199,7 @@ void f_mapset(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
MapArguments unmap_args = MAP_ARGUMENTS_INIT;
|
||||
set_maparg_lhs_rhs(lhs, strlen(lhs), "", 0, LUA_NOREF, 0, &unmap_args);
|
||||
unmap_args.buffer = buffer;
|
||||
buf_do_map(MAPTYPE_UNMAP, &unmap_args, mode, false, curbuf);
|
||||
buf_do_map(MAPTYPE_UNMAP, &unmap_args, mode, is_abbr, curbuf);
|
||||
xfree(unmap_args.rhs);
|
||||
xfree(unmap_args.orig_rhs);
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user