summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-05-21 13:28:44 +0200
committerBram Moolenaar <Bram@vim.org>2018-05-21 13:28:44 +0200
commitf88a5bc10232cc3fac92dba4e8455f4c14311f8e (patch)
treeb4f2ad73bb4be2f42477dc5811de46ccb001e8ee
parent6bff719f7e472e918c60aa336de03e799b806c4f (diff)
downloadvim-git-f88a5bc10232cc3fac92dba4e8455f4c14311f8e.tar.gz
patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existingv8.1.0011
Problem: maparg() and mapcheck() confuse empty and non-existing. Solution: Return <Nop> for an existing non-empty mapping. (closes #2940)
-rw-r--r--src/evalfunc.c7
-rw-r--r--src/testdir/test_maparg.vim8
-rw-r--r--src/version.c2
3 files changed, 14 insertions, 3 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 5cee976d3..46e55b3fd 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -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)
diff --git a/src/testdir/test_maparg.vim b/src/testdir/test_maparg.vim
index 9ad83836c..0fb878b04 100644
--- 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()
diff --git a/src/version.c b/src/version.c
index 7cf8d16b9..3ebeb772d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 11,
+/**/
10,
/**/
9,