]> granicus.if.org Git - vim/commitdiff
patch 8.1.0640: get E14 while typing command :tab with 'incsearch' set v8.1.0640
authorBram Moolenaar <Bram@vim.org>
Wed, 26 Dec 2018 20:45:00 +0000 (21:45 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 26 Dec 2018 20:45:00 +0000 (21:45 +0100)
Problem:    Get E14 while typing command :tab with 'incsearch' set.
Solution:   Do not give an error when looking for the command. (Yasuhiro
            Higashi)

src/ex_docmd.c
src/testdir/test_search.vim
src/version.c

index 67f505d960131f546eb71030efea021ed90d7ffb..aad818294ed1611701f4a766536ccaae6ebd6417 100644 (file)
@@ -2827,18 +2827,22 @@ parse_command_modifiers(exarg_T *eap, char_u **errormsg, int skip_only)
 
            case 't':   if (checkforcmd(&p, "tab", 3))
                        {
-                           long tabnr = get_address(eap, &eap->cmd, ADDR_TABS,
-                                              eap->skip, skip_only, FALSE, 1);
-                           if (tabnr == MAXLNUM)
-                               cmdmod.tab = tabpage_index(curtab) + 1;
-                           else
+                           if (!skip_only)
                            {
-                               if (tabnr < 0 || tabnr > LAST_TAB_NR)
+                               long tabnr = get_address(eap, &eap->cmd,
+                                                   ADDR_TABS, eap->skip,
+                                                   skip_only, FALSE, 1);
+                               if (tabnr == MAXLNUM)
+                                   cmdmod.tab = tabpage_index(curtab) + 1;
+                               else
                                {
-                                   *errormsg = (char_u *)_(e_invrange);
-                                   return FAIL;
+                                   if (tabnr < 0 || tabnr > LAST_TAB_NR)
+                                   {
+                                       *errormsg = (char_u *)_(e_invrange);
+                                       return FAIL;
+                                   }
+                                   cmdmod.tab = tabnr + 1;
                                }
-                               cmdmod.tab = tabnr + 1;
                            }
                            eap->cmd = p;
                            continue;
index 3c83dd197df65994473696d8bd06627b6cc79374..86df794b53413cad55b506614006f23a573bd148 100644 (file)
@@ -783,6 +783,20 @@ func Test_search_cmdline_incsearch_highlight_attr()
   bwipe!
 endfunc
 
+func Test_incsearch_cmdline_modifier()
+  if !exists('+incsearch')
+    return
+  endif
+  call test_override("char_avail", 1)
+  new
+  call setline(1, ['foo'])
+  set incsearch
+  " Test that error E14 does not occur in parsing command modifier.
+  call feedkeys("V:tab", 'tx')
+
+  call Incsearch_cleanup()
+endfunc
+
 func Test_incsearch_scrolling()
   if !CanRunVimInTerminal()
     return
index 30f28996247d5bd83557fcb894d76139dfe3ba9b..10ba489e55eaee9515eb867219a13310ee0cd82b 100644 (file)
@@ -799,6 +799,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    640,
 /**/
     639,
 /**/