Skip to content

Commit

Permalink
patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Browse files Browse the repository at this point in the history
Problem:    maparg() and mapcheck() confuse empty and non-existing.
Solution:   Return <Nop> for an existing non-empty mapping. (closes #2940)
  • Loading branch information
brammool committed May 21, 2018
1 parent 6bff719 commit f88a5bc
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
7 changes: 6 additions & 1 deletion src/evalfunc.c
Original file line number Diff line number Diff line change
Expand Up @@ -7383,7 +7383,12 @@ get_maparg(typval_T *argvars, typval_T *rettv, int exact)
{
/* Return a string. */
if (rhs != NULL)
rettv->vval.v_string = str2special_save(rhs, FALSE);
{
if (*rhs == NUL)
rettv->vval.v_string = vim_strsave((char_u *)"<Nop>");
else
rettv->vval.v_string = str2special_save(rhs, FALSE);
}

}
else if (rettv_dict_alloc(rettv) != FAIL && rhs != NULL)
Expand Down
8 changes: 6 additions & 2 deletions src/testdir/test_maparg.vim
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,13 @@ function Test_maparg()
\ maparg('foo', '', 0, 1))

map abc x<char-114>x
call assert_equal(maparg('abc'), "xrx")
call assert_equal("xrx", maparg('abc'))
map abc y<S-char-114>y
call assert_equal(maparg('abc'), "yRy")
call assert_equal("yRy", maparg('abc'))

map abc <Nop>
call assert_equal("<Nop>", maparg('abc'))
unmap abc
endfunction

function Test_range_map()
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -761,6 +761,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
11,
/**/
10,
/**/
Expand Down

0 comments on commit f88a5bc

Please sign in to comment.