From: Bram Moolenaar Date: Fri, 19 Aug 2011 20:29:02 +0000 (+0200) Subject: updated for version 7.3.285 X-Git-Tag: v7.3.285 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=792826c0c715e037d7cca4d1a671c3b325e801a0;p=vim updated for version 7.3.285 Problem: Mapping no longer works. Solution: Properly check for "char-". Add a test for it. --- diff --git a/src/misc2.c b/src/misc2.c index dbcd653c1..4c05a8cb8 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -2781,6 +2781,12 @@ find_special_key(srcp, modp, keycode, keep_x_key) } if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) bp += 3; /* skip t_xx, xx may be '-' or '>' */ + else if (STRNICMP(bp, "char-", 5) == 0) + { + vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL); + bp += l + 5; + break; + } } if (*bp == '>') /* found matching '>' */ @@ -2810,27 +2816,27 @@ find_special_key(srcp, modp, keycode, keep_x_key) { /* or or */ vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); - *modp = modifiers; - *srcp = end_of_name; - return (int)n; + key = (int)n; } - - /* - * Modifier with single letter, or special key name. - */ -#ifdef FEAT_MBYTE - if (has_mbyte) - l = mb_ptr2len(last_dash + 1); - else -#endif - l = 1; - if (modifiers != 0 && last_dash[l + 1] == '>') - key = PTR2CHAR(last_dash + 1); else { - key = get_special_key_code(last_dash + 1); - if (!keep_x_key) - key = handle_x_keys(key); + /* + * Modifier with single letter, or special key name. + */ +#ifdef FEAT_MBYTE + if (has_mbyte) + l = mb_ptr2len(last_dash + 1); + else +#endif + l = 1; + if (modifiers != 0 && last_dash[l + 1] == '>') + key = PTR2CHAR(last_dash + 1); + else + { + key = get_special_key_code(last_dash + 1); + if (!keep_x_key) + key = handle_x_keys(key); + } } /* diff --git a/src/testdir/test75.in b/src/testdir/test75.in index 2de7a089b..5369d8a3d 100644 --- a/src/testdir/test75.in +++ b/src/testdir/test75.in @@ -2,6 +2,7 @@ STARTTEST :so small.vim +:set cpo-=< :" Test maparg() with a string result :map foo isfoo :vnoremap