diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-04-29 22:10:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-29 22:10:25 +0800 |
commit | d5dc3dad80ab1aef1d5e2afcc4d44a779605da8b (patch) | |
tree | 50a8f20df8aa6b883a7cb2da0bcda564bd12c5dd /src | |
parent | 8c548c9e5416b4e25b51c018ceaa433756ee99b1 (diff) | |
parent | 7ac5359143ef25c4c8c0c427d5533f8d5824ed17 (diff) | |
download | rneovim-d5dc3dad80ab1aef1d5e2afcc4d44a779605da8b.tar.gz rneovim-d5dc3dad80ab1aef1d5e2afcc4d44a779605da8b.tar.bz2 rneovim-d5dc3dad80ab1aef1d5e2afcc4d44a779605da8b.zip |
Merge pull request #18305 from zeertzjq/mapping-rhs
feat(mappings): do not simplify the rhs of a mapping
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/getchar.c | 24 | ||||
-rw-r--r-- | src/nvim/globals.h | 4 |
2 files changed, 17 insertions, 11 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index eb78317ee7..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)); @@ -4861,15 +4861,21 @@ char_u *getcmdkeycmd(int promptc, void *cookie, int indent, bool do_concat) // special case to give nicer error message emsg(e_cmdmap_repeated); aborted = true; - } else if (IS_SPECIAL(c1)) { - if (c1 == K_SNR) { - ga_concat(&line_ga, "<SNR>"); + } else if (c1 == K_SNR) { + ga_concat(&line_ga, "<SNR>"); + } else { + if (cmod != 0) { + ga_append(&line_ga, (char)K_SPECIAL); + ga_append(&line_ga, (char)KS_MODIFIER); + ga_append(&line_ga, (char)cmod); + } + if (IS_SPECIAL(c1)) { + ga_append(&line_ga, (char)K_SPECIAL); + ga_append(&line_ga, (char)K_SECOND(c1)); + ga_append(&line_ga, (char)K_THIRD(c1)); } else { - semsg(e_cmdmap_key, get_special_key_name(c1, cmod)); - aborted = true; + ga_append(&line_ga, (char)c1); } - } else { - ga_append(&line_ga, (char)c1); } cmod = 0; diff --git a/src/nvim/globals.h b/src/nvim/globals.h index 5983f18bb5..070d96ebb3 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -997,8 +997,8 @@ EXTERN char e_float_as_string[] INIT(= N_("E806: using Float as a String")); EXTERN char e_autocmd_err[] INIT(= N_("E5500: autocmd has thrown an exception: %s")); EXTERN char e_cmdmap_err[] INIT(= N_("E5520: <Cmd> mapping must end with <CR>")); -EXTERN char e_cmdmap_repeated[] INIT(= N_("E5521: <Cmd> mapping must end with <CR> before second <Cmd>")); -EXTERN char e_cmdmap_key[] INIT(= N_("E5522: <Cmd> mapping must not include %s key")); +EXTERN char e_cmdmap_repeated[] +INIT(= N_("E5521: <Cmd> mapping must end with <CR> before second <Cmd>")); EXTERN char e_api_error[] INIT(= N_("E5555: API call: %s")); |