]> granicus.if.org Git - vim/commitdiff
patch 8.2.2045: highlighting a character too much with incsearch v8.2.2045
authorBram Moolenaar <Bram@vim.org>
Wed, 25 Nov 2020 12:49:27 +0000 (13:49 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 25 Nov 2020 12:49:27 +0000 (13:49 +0100)
Problem:    Highlighting a character too much with incsearch.
Solution:   Check "search_match_endcol". (Christian Brabandt, closes #7360)

src/drawline.c
src/testdir/dumps/Test_incsearch_newline1.dump [new file with mode: 0644]
src/testdir/dumps/Test_incsearch_newline2.dump [new file with mode: 0644]
src/testdir/dumps/Test_incsearch_newline3.dump [new file with mode: 0644]
src/testdir/dumps/Test_incsearch_newline4.dump [new file with mode: 0644]
src/testdir/dumps/Test_incsearch_newline5.dump [new file with mode: 0644]
src/testdir/test_search.vim
src/version.c

index 0b9974216393e4600e06c4af4f975166a6b1428e..d51b4c2d66e403790c2d5dff3cc8a3f875d990d8 100644 (file)
@@ -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);
diff --git a/src/testdir/dumps/Test_incsearch_newline1.dump b/src/testdir/dumps/Test_incsearch_newline1.dump
new file mode 100644 (file)
index 0000000..9e9241a
--- /dev/null
@@ -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
diff --git a/src/testdir/dumps/Test_incsearch_newline2.dump b/src/testdir/dumps/Test_incsearch_newline2.dump
new file mode 100644 (file)
index 0000000..677343d
--- /dev/null
@@ -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
diff --git a/src/testdir/dumps/Test_incsearch_newline3.dump b/src/testdir/dumps/Test_incsearch_newline3.dump
new file mode 100644 (file)
index 0000000..d80cc74
--- /dev/null
@@ -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
diff --git a/src/testdir/dumps/Test_incsearch_newline4.dump b/src/testdir/dumps/Test_incsearch_newline4.dump
new file mode 100644 (file)
index 0000000..50d88b3
--- /dev/null
@@ -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> 
diff --git a/src/testdir/dumps/Test_incsearch_newline5.dump b/src/testdir/dumps/Test_incsearch_newline5.dump
new file mode 100644 (file)
index 0000000..6568348
--- /dev/null
@@ -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
index f62914e3edcfcd47e2431079c6dff12204b73a8c..00b1a15e12cdefeb273fc57ef13cbb2298ed8315 100644 (file)
@@ -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
index d9b197bdc6a9b8940f849c718cff841360db5caf..ef0e157a6204dd45b0336724286e3773d855cd25 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2045,
 /**/
     2044,
 /**/