]> granicus.if.org Git - vim/commitdiff
patch 8.2.0648: semicolon search does not work in first line v8.2.0648
authorBram Moolenaar <Bram@vim.org>
Mon, 27 Apr 2020 17:29:01 +0000 (19:29 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 27 Apr 2020 17:29:01 +0000 (19:29 +0200)
Problem:    Semicolon search does not work in first line.
Solution:   Allow the cursor to be in line zero. (Christian Brabandt,
            closes #5996)

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

index 43cd013e2cf540821d53a7781cbe91d3b80aa658..ca69c293d6f4f87bb9acba84f3fa7494740c3d5e 100644 (file)
@@ -3069,8 +3069,10 @@ parse_cmd_address(exarg_T *eap, char **errormsg, int silent)
            if (!eap->skip)
            {
                curwin->w_cursor.lnum = eap->line2;
-               // don't leave the cursor on an illegal line or column
-               check_cursor();
+               // Don't leave the cursor on an illegal line or column, but do
+               // accept zero as address, so 0;/PATTERN/ works correctly.
+               if (eap->line2 > 0)
+                   check_cursor();
            }
        }
        else if (*eap->cmd != ',')
index 7d3c0c87d09680e0a2d3cab96a3174fac4493c4a..a5473267dc2b63110ecaec0ffe7119f0caff3608 100644 (file)
@@ -1471,4 +1471,15 @@ func Test_cmdwin_insert_mode_close()
   call assert_equal(1, winnr('$'))
 endfunc
 
+" test that ";" works to find a match at the start of the first line
+func Test_zero_line_search()
+  new
+  call setline(1, ["1, pattern", "2, ", "3, pattern"])
+  call cursor(1,1)
+  0;/pattern/d
+  call assert_equal(["2, ", "3, pattern"], getline(1,'$'))
+  q!
+endfunc
+
+
 " vim: shiftwidth=2 sts=2 expandtab
index 9323b1d09de580550bc8d3faf5216a87682ef1fa..a9a2e293e8bb4d1d4f13665c9c7fb8f3e433cdde 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    648,
 /**/
     647,
 /**/