]> granicus.if.org Git - vim/commitdiff
patch 8.1.0284: 'cursorline' highlighting wrong with 'incsearch' v8.1.0284
authorBram Moolenaar <Bram@vim.org>
Tue, 14 Aug 2018 16:16:52 +0000 (18:16 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 14 Aug 2018 16:16:52 +0000 (18:16 +0200)
Problem:    'cursorline' highlighting wrong with 'incsearch'.
Solution:   Move the cursor back if the match is outside the range.

src/ex_getln.c
src/testdir/dumps/Test_incsearch_substitute_07.dump [new file with mode: 0644]
src/testdir/dumps/Test_incsearch_substitute_08.dump [new file with mode: 0644]
src/testdir/test_search.vim
src/version.c

index a8c5cfb001cb4f5bf7dfd84d043fb0242f1927bd..ba6fe729c74ce864dae13dca4aab410855cbc472 100644 (file)
@@ -480,8 +480,11 @@ may_do_incsearch_highlighting(
 
        if (curwin->w_cursor.lnum < search_first_line
                || curwin->w_cursor.lnum > search_last_line)
+       {
            // match outside of address range
            i = 0;
+           curwin->w_cursor = is_state->search_start;
+       }
 
        // if interrupted while searching, behave like it failed
        if (got_int)
diff --git a/src/testdir/dumps/Test_incsearch_substitute_07.dump b/src/testdir/dumps/Test_incsearch_substitute_07.dump
new file mode 100644 (file)
index 0000000..7b4dc6e
--- /dev/null
@@ -0,0 +1,9 @@
+|f+0&#ffffff0|o@1| |4| @64
+|f|o@1| |5| @64
+|f|o@1| |6| @64
+|f|o@1| |7| @64
+|f|o@1| |8| @64
+|f|o@1| |9| @64
+|f|o@1| |1|0| @63
+|b+9&&|a|r| +8&&|1@1| @63
+|:+0&&|9|,|1@1|s|/|b|a|r> @59
diff --git a/src/testdir/dumps/Test_incsearch_substitute_08.dump b/src/testdir/dumps/Test_incsearch_substitute_08.dump
new file mode 100644 (file)
index 0000000..d87e507
--- /dev/null
@@ -0,0 +1,9 @@
+|f+0&#ffffff0|o@1| |4| @64
+|f|o@1| |5| @64
+|f|o@1| |6| @64
+|f|o@1| |7| @64
+|f|o@1| |8| @64
+|f+8&&|o@1| |9| @64
+|f+0&&|o@1| |1|0| @63
+|b|a|r| |1@1| @63
+|:|9|,|1|0|s|/|b|a|r> @59
index 851811b199ca07e3bf07884432b43e523c877a8d..a36b4fbcd79f8a24554377d0b491f108a407748b 100644 (file)
@@ -839,6 +839,7 @@ func Test_incsearch_substitute_dump()
        \ 'for n in range(1, 10)',
        \ '  call setline(n, "foo " . n)',
        \ 'endfor',
+       \ 'call setline(11, "bar 11")',
        \ '3',
        \ ], 'Xis_subst_script')
   let buf = RunVimInTerminal('-S Xis_subst_script', {'rows': 9, 'cols': 70})
@@ -890,6 +891,20 @@ func Test_incsearch_substitute_dump()
   call VerifyScreenDump(buf, 'Test_incsearch_substitute_06', {})
   call term_sendkeys(buf, "\<Esc>")
 
+  " Cursorline highlighting at match
+  call term_sendkeys(buf, ":set cursorline\<CR>")
+  call term_sendkeys(buf, 'G9G')
+  call term_sendkeys(buf, ':9,11s/bar')
+  sleep 100m
+  call VerifyScreenDump(buf, 'Test_incsearch_substitute_07', {})
+  call term_sendkeys(buf, "\<Esc>")
+
+  " Cursorline highlighting at cursor when no match
+  call term_sendkeys(buf, ':9,10s/bar')
+  sleep 100m
+  call VerifyScreenDump(buf, 'Test_incsearch_substitute_08', {})
+  call term_sendkeys(buf, "\<Esc>")
+
   call StopVimInTerminal(buf)
   call delete('Xis_subst_script')
 endfunc
index 005cce6b478b19092e53131ec35d5d1366cecc1e..18051faa3773d88867c7c9bfc8b2e8c4b00b7674 100644 (file)
@@ -794,6 +794,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    284,
 /**/
     283,
 /**/