aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval.c8
-rw-r--r--src/nvim/testdir/test_maparg.vim8
2 files changed, 12 insertions, 4 deletions
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 *)"<Nop>");
+ } 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 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()