patch 9.0.1759: Visual highlight not working with cursor at end of screen line

Commit: 
https://github.com/vim/vim/commit/8fc6a1dae07aa63faa6bfe6ed93888635745830c
Author: zeertzjq <[email protected]>
Date:   Sun Aug 20 18:12:54 2023 +0200

    patch 9.0.1759: Visual highlight not working with cursor at end of screen 
line
    
    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 <[email protected]>
    Co-authored-by: zeertzjq <[email protected]>

diff --git a/src/drawline.c b/src/drawline.c
index 0be071876..88d72cedd 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 000000000..fa0b2dc09
--- /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 f152e7b79..58b739294 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 b858a1015..2da6a2074 100644
--- a/src/version.c
+++ b/src/version.c
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1759,
 /**/
     1758,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qXl4z-00Ahfx-8w%40256bit.org.

Raspunde prin e-mail lui