diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-04-29 21:00:58 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-04-29 21:12:48 +0800 |
commit | 7ac5359143ef25c4c8c0c427d5533f8d5824ed17 (patch) | |
tree | 50a8f20df8aa6b883a7cb2da0bcda564bd12c5dd | |
parent | 98f62a2cfa98363217fdfcf96b6c636e91dba84d (diff) | |
download | rneovim-7ac5359143ef25c4c8c0c427d5533f8d5824ed17.tar.gz rneovim-7ac5359143ef25c4c8c0c427d5533f8d5824ed17.tar.bz2 rneovim-7ac5359143ef25c4c8c0c427d5533f8d5824ed17.zip |
feat(mappings): do not simplify the rhs of a mapping
-rw-r--r-- | runtime/doc/vim_diff.txt | 3 | ||||
-rw-r--r-- | src/nvim/getchar.c | 4 | ||||
-rw-r--r-- | test/functional/ui/input_spec.lua | 5 |
3 files changed, 9 insertions, 3 deletions
diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index bada506c63..524978f523 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -366,8 +366,9 @@ Macro/|recording| behavior the results of keys from 'keymap'. Mappings: - Creating a mapping for a simplifiable key (e.g. <C-I>) doesn't replace an +- Creating a mapping for a simplifiable key (e.g. <C-I>) doesn't replace an existing mapping for its simplified form (e.g. <Tab>). +- The rhs of a mapping is not simplified when it is defined. Motion: The |jumplist| avoids useless/phantom jumps. diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 0ce8f6e715..1284382fe8 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -2885,8 +2885,8 @@ void set_maparg_lhs_rhs(const char_u *const orig_lhs, const size_t orig_lhs_len, mapargs->rhs_len = 0; mapargs->rhs_is_noop = true; } else { - replaced = replace_termcodes(orig_rhs, orig_rhs_len, &rhs_buf, REPTERM_DO_LT, NULL, - cpo_flags); + replaced = replace_termcodes(orig_rhs, orig_rhs_len, &rhs_buf, + REPTERM_DO_LT | REPTERM_NO_SIMPLIFY, NULL, cpo_flags); mapargs->rhs_len = STRLEN(replaced); mapargs->rhs_is_noop = false; mapargs->rhs = xcalloc(mapargs->rhs_len + 1, sizeof(char_u)); diff --git a/test/functional/ui/input_spec.lua b/test/functional/ui/input_spec.lua index 0f4e97088c..07582ba602 100644 --- a/test/functional/ui/input_spec.lua +++ b/test/functional/ui/input_spec.lua @@ -313,6 +313,11 @@ it('unsimplified mapping works when there was a partial match vim-patch:8.2.4504 expect('xb') end) +it('rhs of a mapping is not simplified', function() + command('nnoremap <Plug>foo <C-J>') + eq('<C-J>', funcs.maparg('<Plug>foo')) +end) + describe('input non-printable chars', function() after_each(function() os.remove('Xtest-overwrite') |