]> granicus.if.org Git - vim/commitdiff
patch 8.0.0402: :map completion does not have <special> v8.0.0402
authorBram Moolenaar <Bram@vim.org>
Thu, 2 Mar 2017 22:05:51 +0000 (23:05 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 2 Mar 2017 22:05:51 +0000 (23:05 +0100)
Problem:    :map completion does not have <special>. (Dominique Pelle)
Solution:   Recognize <special> in completion.  Add a test.

src/getchar.c
src/testdir/test_cmdline.vim
src/version.c

index 9583d9a8f91fb43b429569d80775134e99d2d24b..3a1760f3983f29b5ffe852888cf004648531d069 100644 (file)
@@ -4216,6 +4216,11 @@ set_context_in_map_cmd(
                arg = skipwhite(arg + 8);
                continue;
            }
+           if (STRNCMP(arg, "<special>", 9) == 0)
+           {
+               arg = skipwhite(arg + 9);
+               continue;
+           }
 #ifdef FEAT_EVAL
            if (STRNCMP(arg, "<script>", 8) == 0)
            {
@@ -4267,7 +4272,7 @@ ExpandMappings(
     {
        count = 0;
 
-       for (i = 0; i < 6; ++i)
+       for (i = 0; i < 7; ++i)
        {
            if (i == 0)
                p = (char_u *)"<silent>";
@@ -4285,6 +4290,8 @@ ExpandMappings(
 #endif
            else if (i == 5)
                p = (char_u *)"<nowait>";
+           else if (i == 6)
+               p = (char_u *)"<special>";
            else
                continue;
 
index 05beb45c9879f4fc8e79d34899a6862b13ebd9a5..8d5ae286e6d26429978a5a79beb157d30f5eab8a 100644 (file)
@@ -25,6 +25,26 @@ func Test_complete_wildmenu()
   set nowildmenu
 endfunc
 
+func Test_map_completion()
+  if !has('cmdline_compl')
+    return
+  endif
+  call feedkeys(":map <unique> <si\<Tab>\<Home>\"\<CR>", 'xt')
+  call assert_equal('"map <unique> <silent>', getreg(':'))
+  call feedkeys(":map <script> <un\<Tab>\<Home>\"\<CR>", 'xt')
+  call assert_equal('"map <script> <unique>', getreg(':'))
+  call feedkeys(":map <expr> <sc\<Tab>\<Home>\"\<CR>", 'xt')
+  call assert_equal('"map <expr> <script>', getreg(':'))
+  call feedkeys(":map <buffer> <e\<Tab>\<Home>\"\<CR>", 'xt')
+  call assert_equal('"map <buffer> <expr>', getreg(':'))
+  call feedkeys(":map <nowait> <b\<Tab>\<Home>\"\<CR>", 'xt')
+  call assert_equal('"map <nowait> <buffer>', getreg(':'))
+  call feedkeys(":map <special> <no\<Tab>\<Home>\"\<CR>", 'xt')
+  call assert_equal('"map <special> <nowait>', getreg(':'))
+  call feedkeys(":map <silent> <sp\<Tab>\<Home>\"\<CR>", 'xt')
+  call assert_equal('"map <silent> <special>', getreg(':'))
+endfunc
+
 func Test_match_completion()
   if !has('cmdline_compl')
     return
index 932132d48ce284a3b2057fb421f473c291d087e5..e10968785b38729066dc26a812b2cfbed72e8727 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    402,
 /**/
     401,
 /**/