summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-05-03 15:13:57 +0200
committerBram Moolenaar <Bram@vim.org>2019-05-03 15:13:57 +0200
commit2cb9f0253228478ec27265ff40f59c629874d695 (patch)
tree080e9fd1c1fbb7aa76c23ffe77872cef0b0f9d97
parentd788543ac6996536c532bceb7bbff51cd38d8699 (diff)
downloadvim-git-2cb9f0253228478ec27265ff40f59c629874d695.tar.gz
patch 8.1.1251: no test for completion of mapping keysv8.1.1251
Problem: No test for completion of mapping keys. Solution: Add a test. Also clean up the code.
-rw-r--r--src/getchar.c4
-rw-r--r--src/proto/term.pro2
-rw-r--r--src/term.c20
-rw-r--r--src/testdir/test_cmdline.vim36
-rw-r--r--src/version.c2
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,