diff options
-rw-r--r-- | src/getchar.c | 4 | ||||
-rw-r--r-- | src/proto/term.pro | 2 | ||||
-rw-r--r-- | src/term.c | 20 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 36 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 50 insertions, 14 deletions
diff --git a/src/getchar.c b/src/getchar.c index a1ffced14..776e4e684 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -4263,7 +4263,7 @@ set_context_in_map_cmd( } /* - * Find all mapping/abbreviation names that match regexp 'prog'. + * Find all mapping/abbreviation names that match regexp "regmatch"'. * For command line expansion of ":[un]map" and ":[un]abbrev" in all modes. * Return OK if matches found, FAIL otherwise. */ @@ -4343,7 +4343,7 @@ ExpandMappings( { if (mp->m_mode & expand_mapmodes) { - p = translate_mapping(mp->m_keys, TRUE); + p = translate_mapping(mp->m_keys); if (p != NULL && vim_regexec(regmatch, p, (colnr_T)0)) { if (round == 1) diff --git a/src/proto/term.pro b/src/proto/term.pro index 1b8ab5f0d..136a9695e 100644 --- a/src/proto/term.pro +++ b/src/proto/term.pro @@ -74,7 +74,7 @@ char_u *replace_termcodes(char_u *from, char_u **bufp, int from_part, int do_lt, int find_term_bykeys(char_u *src); void show_termcodes(void); int show_one_termcode(char_u *name, char_u *code, int printit); -char_u *translate_mapping(char_u *str, int expmap); +char_u *translate_mapping(char_u *str); void update_tcap(int attr); void swap_tcap(void); guicolor_T gui_get_color_cmn(char_u *name); diff --git a/src/term.c b/src/term.c index 6fa519b4f..08a55632f 100644 --- a/src/term.c +++ b/src/term.c @@ -6629,22 +6629,20 @@ check_for_codes_from_term(void) #if defined(FEAT_CMDL_COMPL) || defined(PROTO) /* * Translate an internal mapping/abbreviation representation into the - * corresponding external one recognized by :map/:abbrev commands; - * respects the current B/k/< settings of 'cpoption'. + * corresponding external one recognized by :map/:abbrev commands. + * Respects the current B/k/< settings of 'cpoption'. * * This function is called when expanding mappings/abbreviations on the - * command-line, and for building the "Ambiguous mapping..." error message. + * command-line. * - * It uses a growarray to build the translation string since the - * latter can be wider than the original description. The caller has to - * free the string afterwards. + * It uses a growarray to build the translation string since the latter can be + * wider than the original description. The caller has to free the string + * afterwards. * * Returns NULL when there is a problem. */ char_u * -translate_mapping( - char_u *str, - int expmap) /* TRUE when expanding mappings on command-line */ +translate_mapping(char_u *str) { garray_T ga; int c; @@ -6691,7 +6689,7 @@ translate_mapping( } if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL) { - if (expmap && cpo_special) + if (cpo_special) { ga_clear(&ga); return NULL; @@ -6703,7 +6701,7 @@ translate_mapping( } if (IS_SPECIAL(c) || modifiers) /* special key */ { - if (expmap && cpo_special) + if (cpo_special) { ga_clear(&ga); return NULL; diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 3a849cbd1..f9fd80d2d 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -77,6 +77,42 @@ func Test_map_completion() call assert_equal('"map <special> <nowait>', getreg(':')) call feedkeys(":map <silent> <sp\<Tab>\<Home>\"\<CR>", 'xt') call assert_equal('"map <silent> <special>', getreg(':')) + + map ,f commaf + map ,g commaf + call feedkeys(":map ,\<Tab>\<Home>\"\<CR>", 'xt') + call assert_equal('"map ,f', getreg(':')) + call feedkeys(":map ,\<Tab>\<Tab>\<Home>\"\<CR>", 'xt') + call assert_equal('"map ,g', getreg(':')) + unmap ,f + unmap ,g + + set cpo-=< cpo-=B cpo-=k + map <Left> left + call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt') + call assert_equal('"map <Left>', getreg(':')) + unmap <Left> + + set cpo+=< + map <Left> left + call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt') + call assert_equal('"map <Left>', getreg(':')) + unmap <Left> + set cpo-=< + + set cpo+=B + map <Left> left + call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt') + call assert_equal('"map <Left>', getreg(':')) + unmap <Left> + set cpo-=B + + set cpo+=k + map <Left> left + call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt') + call assert_equal('"map <Left>', getreg(':')) + unmap <Left> + set cpo-=k endfunc func Test_match_completion() diff --git a/src/version.c b/src/version.c index 2fee19b5c..13b35d57c 100644 --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1251, +/**/ 1250, /**/ 1249, |