# HG changeset patch # User Bram Moolenaar # Date 1363703268 -3600 # Node ID d52c45b35fb0c3b77bbace6cec3deda8100fbb7a # Parent a13087030831dca08cf7d680c89b874e839c6095 updated for version 7.3.871 Problem: search('^$', 'c') does not use the empty match under the cursor. Solution: Special handling of the 'c' flag. (Christian Brabandt) Add tests. diff --git a/src/search.c b/src/search.c --- a/src/search.c +++ b/src/search.c @@ -727,6 +727,8 @@ searchit(win, buf, pos, dir, pat, count, ++matchcol; } } + if (options & SEARCH_START) + break; if (ptr[matchcol] == NUL || (nmatched = vim_regexec_multi(®match, win, buf, lnum + matchpos.lnum, diff --git a/src/testdir/test14.in b/src/testdir/test14.in --- a/src/testdir/test14.in +++ b/src/testdir/test14.in @@ -2,6 +2,7 @@ Tests for "vaBiB", end could be wrong. Also test ":s/pat/sub/" with different ~s in sub. Also test for ^Vxff and ^Vo123 in Insert mode. Also test "[m", "]m", "[M" and "]M" +Also test search() STARTTEST :so small.vim @@ -34,6 +35,16 @@ j2]MaH:.w >>test.out 2[MaJ:.w >>test.out k[MaK:.w >>test.out 3[MaL:.w >>test.out +:" +/^foobar +:let startline = line('.') +:call search('foobar', 'c') +:call append(line('$'), line('.') - startline) +j:call search('^$', 'c') +:call append(line('$'), line('.') - startline) +:call search('^$', 'bc') +:call append(line('$'), line('.') - startline) +:/^search()/,$w >>test.out :qa! ENDTEST @@ -64,3 +75,8 @@ Piece of Java } } e3 } + +foobar + + +search() diff --git a/src/testdir/test14.ok b/src/testdir/test14.ok --- a/src/testdir/test14.ok +++ b/src/testdir/test14.ok @@ -15,3 +15,7 @@ ABC !ag8 }JH e3 }K e2 {LF +search() +0 +1 +1 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 871, +/**/ 870, /**/ 869,