Mercurial > vim
changeset 13986:4a41a169e5ea v8.1.0011
patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
commit https://github.com/vim/vim/commit/f88a5bc10232cc3fac92dba4e8455f4c14311f8e
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon May 21 13:28:44 2018 +0200
patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Problem: maparg() and mapcheck() confuse empty and non-existing.
Solution: Return <Nop> for an existing non-empty mapping. (closes https://github.com/vim/vim/issues/2940)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 21 May 2018 13:30:06 +0200 |
parents | 3c3c934eccc0 |
children | 381f04622c20 |
files | src/evalfunc.c src/testdir/test_maparg.vim src/version.c |
diffstat | 3 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -7383,7 +7383,12 @@ get_maparg(typval_T *argvars, typval_T * { /* 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)
--- a/src/testdir/test_maparg.vim +++ b/src/testdir/test_maparg.vim @@ -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()