vim-patch:9.0.1785: wrong cursor position with 'showbreak' and lcs-eol (#24852)

Problem:  wrong cursor position with 'showbreak' and lcs-eol
Solution: Add size of 'showbreak' before when 'listchars' "eol" is used.
          Also fix wrong cursor position with wrapping virtual text on
          empty line and 'showbreak'.

closes: vim/vim#12891

1193951beb
This commit is contained in:
zeertzjq
2023-08-24 07:19:18 +08:00
committed by GitHub
parent dc45fb4655
commit 466c18b818
5 changed files with 72 additions and 46 deletions

View File

@@ -937,7 +937,9 @@ func Test_cursor_position_with_showbreak()
let lines =<< trim END
vim9script
&signcolumn = 'yes'
&showbreak = '+ '
&showbreak = '++'
&breakindent = true
&breakindentopt = 'shift:2'
var leftcol: number = win_getid()->getwininfo()->get(0, {})->get('textoff')
repeat('x', &columns - leftcol - 1)->setline(1)
'second line'->setline(2)
@@ -946,7 +948,13 @@ func Test_cursor_position_with_showbreak()
let buf = RunVimInTerminal('-S XscriptShowbreak', #{rows: 6})
call term_sendkeys(buf, "AX")
call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak', {})
call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_1', {})
" No line wraps, so changing 'showbreak' should lead to the same screen.
call term_sendkeys(buf, "\<C-\>\<C-O>:setlocal showbreak=+\<CR>")
call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_1', {})
" The first line now wraps because of "eol" in 'listchars'.
call term_sendkeys(buf, "\<C-\>\<C-O>:setlocal list\<CR>")
call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_2', {})
call StopVimInTerminal(buf)
endfunc