diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-08-20 18:12:54 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-08-20 18:12:54 +0200 |
commit | 8fc6a1dae07aa63faa6bfe6ed93888635745830c (patch) | |
tree | 4324dfaf69a1081379f8cd4b5b8076887a99a586 /src | |
parent | 0ffc17aa479867f6f3ee14a46cf71352f126b5ba (diff) |
patch 9.0.1759: Visual highlight not working with cursor at end of screen linev9.0.1759
Problem: Visual highlight not working with cursor at end of screen line
and 'showbreak'.
Solution: Only update "vcol_prev" when drawing buffer text.
closes: #12865
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/drawline.c | 4 | ||||
-rw-r--r-- | src/testdir/dumps/Test_visual_hl_with_showbreak.dump | 6 | ||||
-rw-r--r-- | src/testdir/test_visual.vim | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 29 insertions, 1 deletions
diff --git a/src/drawline.c b/src/drawline.c index 0be071876f..88d72cedd5 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -3792,9 +3792,11 @@ win_line( } #endif + if (wlv.draw_state == WL_LINE) + vcol_prev = wlv.vcol; + // Store character to be displayed. // Skip characters that are left of the screen for 'nowrap'. - vcol_prev = wlv.vcol; if (wlv.draw_state < WL_LINE || n_skip <= 0) { // Store the character. diff --git a/src/testdir/dumps/Test_visual_hl_with_showbreak.dump b/src/testdir/dumps/Test_visual_hl_with_showbreak.dump new file mode 100644 index 0000000000..fa0b2dc090 --- /dev/null +++ b/src/testdir/dumps/Test_visual_hl_with_showbreak.dump @@ -0,0 +1,6 @@ +|a+0&#ffffff0@48>a +|++0#4040ff13&|a+0#0000000#e0e0e08@3|a+0&#ffffff0@5| @38 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@9|5| @8|1|,|5|0| @9|A|l@1| diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim index f152e7b79b..58b7392947 100644 --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1554,5 +1554,23 @@ func Test_heap_buffer_overflow() set updatecount& endfunc +" Test Visual highlight with cursor at end of screen line and 'showbreak' +func Test_visual_hl_with_showbreak() + CheckScreendump + + let lines =<< trim END + setlocal showbreak=+ + call setline(1, repeat('a', &columns + 10)) + normal g$v4lo + END + call writefile(lines, 'XTest_visual_sbr', 'D') + + let buf = RunVimInTerminal('-S XTest_visual_sbr', {'rows': 6, 'cols': 50}) + call VerifyScreenDump(buf, 'Test_visual_hl_with_showbreak', {}) + + " clean up + call term_sendkeys(buf, "\<Esc>") + call StopVimInTerminal(buf) +endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index b858a1015d..2da6a2074e 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1759, +/**/ 1758, /**/ 1757, |