forked from aniani/vim
patch 8.1.1251: no test for completion of mapping keys
Problem: No test for completion of mapping keys. Solution: Add a test. Also clean up the code.
This commit is contained in:
@@ -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.
|
* For command line expansion of ":[un]map" and ":[un]abbrev" in all modes.
|
||||||
* Return OK if matches found, FAIL otherwise.
|
* Return OK if matches found, FAIL otherwise.
|
||||||
*/
|
*/
|
||||||
@@ -4343,7 +4343,7 @@ ExpandMappings(
|
|||||||
{
|
{
|
||||||
if (mp->m_mode & expand_mapmodes)
|
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 (p != NULL && vim_regexec(regmatch, p, (colnr_T)0))
|
||||||
{
|
{
|
||||||
if (round == 1)
|
if (round == 1)
|
||||||
|
|||||||
@@ -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);
|
int find_term_bykeys(char_u *src);
|
||||||
void show_termcodes(void);
|
void show_termcodes(void);
|
||||||
int show_one_termcode(char_u *name, char_u *code, int printit);
|
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 update_tcap(int attr);
|
||||||
void swap_tcap(void);
|
void swap_tcap(void);
|
||||||
guicolor_T gui_get_color_cmn(char_u *name);
|
guicolor_T gui_get_color_cmn(char_u *name);
|
||||||
|
|||||||
20
src/term.c
20
src/term.c
@@ -6629,22 +6629,20 @@ check_for_codes_from_term(void)
|
|||||||
#if defined(FEAT_CMDL_COMPL) || defined(PROTO)
|
#if defined(FEAT_CMDL_COMPL) || defined(PROTO)
|
||||||
/*
|
/*
|
||||||
* Translate an internal mapping/abbreviation representation into the
|
* Translate an internal mapping/abbreviation representation into the
|
||||||
* corresponding external one recognized by :map/:abbrev commands;
|
* corresponding external one recognized by :map/:abbrev commands.
|
||||||
* respects the current B/k/< settings of 'cpoption'.
|
* Respects the current B/k/< settings of 'cpoption'.
|
||||||
*
|
*
|
||||||
* This function is called when expanding mappings/abbreviations on the
|
* 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
|
* It uses a growarray to build the translation string since the latter can be
|
||||||
* latter can be wider than the original description. The caller has to
|
* wider than the original description. The caller has to free the string
|
||||||
* free the string afterwards.
|
* afterwards.
|
||||||
*
|
*
|
||||||
* Returns NULL when there is a problem.
|
* Returns NULL when there is a problem.
|
||||||
*/
|
*/
|
||||||
char_u *
|
char_u *
|
||||||
translate_mapping(
|
translate_mapping(char_u *str)
|
||||||
char_u *str,
|
|
||||||
int expmap) /* TRUE when expanding mappings on command-line */
|
|
||||||
{
|
{
|
||||||
garray_T ga;
|
garray_T ga;
|
||||||
int c;
|
int c;
|
||||||
@@ -6691,7 +6689,7 @@ translate_mapping(
|
|||||||
}
|
}
|
||||||
if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL)
|
if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL)
|
||||||
{
|
{
|
||||||
if (expmap && cpo_special)
|
if (cpo_special)
|
||||||
{
|
{
|
||||||
ga_clear(&ga);
|
ga_clear(&ga);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -6703,7 +6701,7 @@ translate_mapping(
|
|||||||
}
|
}
|
||||||
if (IS_SPECIAL(c) || modifiers) /* special key */
|
if (IS_SPECIAL(c) || modifiers) /* special key */
|
||||||
{
|
{
|
||||||
if (expmap && cpo_special)
|
if (cpo_special)
|
||||||
{
|
{
|
||||||
ga_clear(&ga);
|
ga_clear(&ga);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -77,6 +77,42 @@ func Test_map_completion()
|
|||||||
call assert_equal('"map <special> <nowait>', getreg(':'))
|
call assert_equal('"map <special> <nowait>', getreg(':'))
|
||||||
call feedkeys(":map <silent> <sp\<Tab>\<Home>\"\<CR>", 'xt')
|
call feedkeys(":map <silent> <sp\<Tab>\<Home>\"\<CR>", 'xt')
|
||||||
call assert_equal('"map <silent> <special>', getreg(':'))
|
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
|
endfunc
|
||||||
|
|
||||||
func Test_match_completion()
|
func Test_match_completion()
|
||||||
|
|||||||
@@ -767,6 +767,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1251,
|
||||||
/**/
|
/**/
|
||||||
1250,
|
1250,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user