1
0
forked from aniani/vim

patch 8.2.4819: unmapping simplified keys also deletes other mapping

Problem:    Unmapping simplified keys also deletes other mapping.
Solution:   Only unmap a mapping with m_simplified set. (closes #10270)
This commit is contained in:
zeertzjq
2022-04-24 17:07:53 +01:00
committed by Bram Moolenaar
parent ac92ab7719
commit a4e3332650
3 changed files with 20 additions and 1 deletions

View File

@@ -725,6 +725,9 @@ do_map(
mpp = &(mp->m_next);
continue;
}
if (did_simplify && keyround == 1
&& !mp->m_simplified)
break;
// We reset the indicated mode bits. If nothing
// is left the entry is deleted below.
mp->m_mode &= ~mode;
@@ -814,7 +817,10 @@ do_map(
{
// delete entry
if (!did_it)
retval = 2; // no match
{
if (!did_simplify || keyround == 2)
retval = 2; // no match
}
else if (*keys == Ctrl_C)
{
// If CTRL-C has been unmapped, reuse it for Interrupting.

View File

@@ -1627,4 +1627,15 @@ func Test_mouse_drag_insert_map()
set mouse&
endfunc
func Test_unmap_simplfied()
map <C-I> foo
map <Tab> bar
call assert_equal('foo', maparg('<C-I>'))
call assert_equal('bar', maparg('<Tab>'))
unmap <C-I>
call assert_equal('', maparg('<C-I>'))
call assert_equal('bar', maparg('<Tab>'))
unmap <Tab>
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4819,
/**/
4818,
/**/