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()
--- 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,