From 548e5985734e4b216852205879daf9bfb00dbe5a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 26 Dec 2018 21:45:00 +0100 Subject: [PATCH] patch 8.1.0640: get E14 while typing command :tab with 'incsearch' set 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 | 22 +++++++++++++--------- src/testdir/test_search.vim | 14 ++++++++++++++ src/version.c | 2 ++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 67f505d960..aad818294e 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -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; diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim index 3c83dd197d..86df794b53 100644 --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -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 diff --git a/src/version.c b/src/version.c index 30f2899624..10ba489e55 100644 --- a/src/version.c +++ b/src/version.c @@ -799,6 +799,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 640, /**/ 639, /**/