1
0
forked from aniani/vim

patch 8.0.0298: Ex command range with repeated search does not work

Problem:    Ex command range with repeated search does not work. (Bruce
            DeVisser)
Solution:   Skip over \/, \? and \&.
This commit is contained in:
Bram Moolenaar 2017-02-03 21:19:04 +01:00
parent 03ff9bcbc9
commit cbf20fbcd3
3 changed files with 36 additions and 2 deletions

View File

@ -4357,9 +4357,16 @@ skip_range(
{
unsigned delim;
while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;\\", *cmd) != NULL)
{
if (*cmd == '\'')
if (*cmd == '\\')
{
if (cmd[1] == '?' || cmd[1] == '/' || cmd[1] == '&')
++cmd;
else
break;
}
else if (*cmd == '\'')
{
if (*++cmd == NUL && ctx != NULL)
*ctx = EXPAND_NOTHING;

View File

@ -306,3 +306,28 @@ func Test_cmdline_complete_wildoptions()
call assert_equal(a, b)
bw!
endfunc
" using a leading backslash here
set cpo+=C
func Test_cmdline_search_range()
new
call setline(1, ['a', 'b', 'c', 'd'])
/d
1,\/s/b/B/
call assert_equal('B', getline(2))
/a
$
\?,4s/c/C/
call assert_equal('C', getline(3))
call setline(1, ['a', 'b', 'c', 'd'])
%s/c/c/
1,\&s/b/B/
call assert_equal('B', getline(2))
bwipe!
endfunc
set cpo&

View File

@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
298,
/**/
297,
/**/