Mercurial > vim
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