changeset 22997:00548e40e708 v8.2.2045

patch 8.2.2045: highlighting a character too much with incsearch Commit: https://github.com/vim/vim/commit/448465e6872905967c97a56cd45307530795653c Author: Bram Moolenaar <Bram@vim.org> Date: Wed Nov 25 13:49:27 2020 +0100 patch 8.2.2045: highlighting a character too much with incsearch Problem: Highlighting a character too much with incsearch. Solution: Check "search_match_endcol". (Christian Brabandt, closes https://github.com/vim/vim/issues/7360)
author Bram Moolenaar <Bram@vim.org>
date Wed, 25 Nov 2020 14:00:04 +0100
parents 00ca79a2ae52
children 8a52dc676c59
files src/drawline.c src/testdir/dumps/Test_incsearch_newline1.dump src/testdir/dumps/Test_incsearch_newline2.dump src/testdir/dumps/Test_incsearch_newline3.dump src/testdir/dumps/Test_incsearch_newline4.dump src/testdir/dumps/Test_incsearch_newline5.dump src/testdir/test_search.vim src/version.c
diffstat 8 files changed, 64 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -641,7 +641,7 @@ win_line(
 	    else
 		tocol = MAXCOL;
 	    // do at least one character; happens when past end of line
-	    if (fromcol == tocol)
+	    if (fromcol == tocol && search_match_endcol)
 		tocol = fromcol + 1;
 	    area_highlighting = TRUE;
 	    vi_attr = HL_ATTR(HLF_I);
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_incsearch_newline1.dump
@@ -0,0 +1,5 @@
+|t+1&#ffffff0|e|s|t| +0&&@5
+|x@2| @6
+|~+0#4040ff13&| @8
+|~| @8
+|/+0#0000000&|t|e|s|t> @4
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_incsearch_newline2.dump
@@ -0,0 +1,5 @@
+|t+1&#ffffff0|e|s|t| | +0&&@4
+|x@2| @6
+|~+0#4040ff13&| @8
+|~| @8
+|/+0#0000000&|t|e|s|t|\|n> @2
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_incsearch_newline3.dump
@@ -0,0 +1,5 @@
+|t+1&#ffffff0|e|s|t| | +0&&@4
+|x+1&&|x+0&&@1| @6
+|~+0#4040ff13&| @8
+|~| @8
+|/+0#0000000&|t|e|s|t|\|n|x> @1
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_incsearch_newline4.dump
@@ -0,0 +1,5 @@
+|t+1&#ffffff0|e|s|t| | +0&&@4
+|x+1&&@1|x+0&&| @6
+|~+0#4040ff13&| @8
+|~| @8
+|/+0#0000000&|t|e|s|t|\|n|x@1> 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_incsearch_newline5.dump
@@ -0,0 +1,5 @@
+|o+0#00e0003#ffffff0|r| |t|y|p|e| |c|o
+|m| @7|m
+|a|n|d| |t|o| |c|o|n
+|t| @7|i
+|n|u|e> +0#0000000&@6
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -1776,4 +1776,40 @@ func Test_search_stopline()
   close!
 endfunc
 
+func Test_zzzz_incsearch_highlighting_newline()
+  CheckRunVimInTerminal
+  CheckOption incsearch
+  CheckScreendump
+  new
+  call test_override("char_avail", 1)
+
+  let commands =<< trim [CODE]
+    set incsearch nohls
+    call setline(1, ['test', 'xxx'])
+  [CODE]
+  call writefile(commands, 'Xincsearch_nl')
+  let buf = RunVimInTerminal('-S Xincsearch_nl', {'rows': 5, 'cols': 10})
+  " Need to send one key at a time to force a redraw
+  call term_sendkeys(buf, '/test')
+  sleep 100m
+  call VerifyScreenDump(buf, 'Test_incsearch_newline1', {})
+  call term_sendkeys(buf, '\n')
+  sleep 100m
+  call VerifyScreenDump(buf, 'Test_incsearch_newline2', {})
+  call term_sendkeys(buf, 'x')
+  sleep 100m
+  call VerifyScreenDump(buf, 'Test_incsearch_newline3', {})
+  call term_sendkeys(buf, 'x')
+  call VerifyScreenDump(buf, 'Test_incsearch_newline4', {})
+  call term_sendkeys(buf, "\<CR>")
+  sleep 100m
+  call VerifyScreenDump(buf, 'Test_incsearch_newline5', {})
+  call StopVimInTerminal(buf)
+
+  " clean up
+  call delete('Xincsearch_nl')
+  call test_override("char_avail", 0)
+  bw
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2045,
+/**/
     2044,
 /**/
     2043,