From 207cfce3dea64eca3b93735adfac0a75cc6c1a4a Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Mon, 10 Sep 2018 03:27:04 -0400 Subject: vim-patch:8.1.0011: maparg() and mapcheck() confuse empty and non-existing (#8976) Problem: maparg() and mapcheck() confuse empty and non-existing. Solution: Return for an existing non-empty mapping. (closes vim/vim#2940) https://github.com/vim/vim/commit/f88a5bc10232cc3fac92dba4e8455f4c14311f8e --- src/nvim/eval.c | 8 ++++++-- src/nvim/testdir/test_maparg.vim | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 541a255dcc..9f99ccc110 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -12145,8 +12145,12 @@ static void get_maparg(typval_T *argvars, typval_T *rettv, int exact) if (!get_dict) { // Return a string. if (rhs != NULL) { - rettv->vval.v_string = (char_u *)str2special_save( - (const char *)rhs, false, false); + if (*rhs == NUL) { + rettv->vval.v_string = vim_strsave((char_u *)""); + } else { + rettv->vval.v_string = (char_u *)str2special_save( + (char *)rhs, false, false); + } } } else { diff --git a/src/nvim/testdir/test_maparg.vim b/src/nvim/testdir/test_maparg.vim index 9ad83836c6..0fb878b04a 100644 --- a/src/nvim/testdir/test_maparg.vim +++ b/src/nvim/testdir/test_maparg.vim @@ -29,9 +29,13 @@ function Test_maparg() \ maparg('foo', '', 0, 1)) map abc xx - call assert_equal(maparg('abc'), "xrx") + call assert_equal("xrx", maparg('abc')) map abc yy - call assert_equal(maparg('abc'), "yRy") + call assert_equal("yRy", maparg('abc')) + + map abc + call assert_equal("", maparg('abc')) + unmap abc endfunction function Test_range_map() -- cgit