aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-08-24 07:19:18 +0800
committerGitHub <noreply@github.com>2023-08-24 07:19:18 +0800
commit466c18b8185c44f4fbf67ae91a2ffe27c1919306 (patch)
tree8b1aee377e20ebe2a7751240bfe7f2922e2db7f6 /test
parentdc45fb4655f5ce56c0bbcb179ef1c38149491d9f (diff)
downloadrneovim-466c18b8185c44f4fbf67ae91a2ffe27c1919306.tar.gz
rneovim-466c18b8185c44f4fbf67ae91a2ffe27c1919306.tar.bz2
rneovim-466c18b8185c44f4fbf67ae91a2ffe27c1919306.zip
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 https://github.com/vim/vim/commit/1193951bebcff50d88403ce17dec5d3be14f131d
Diffstat (limited to 'test')
-rw-r--r--test/functional/legacy/breakindent_spec.lua27
-rw-r--r--test/functional/ui/decorations_spec.lua9
-rw-r--r--test/old/testdir/test_breakindent.vim12
3 files changed, 37 insertions, 11 deletions
diff --git a/test/functional/legacy/breakindent_spec.lua b/test/functional/legacy/breakindent_spec.lua
index d7779684a4..ecd2d47f47 100644
--- a/test/functional/legacy/breakindent_spec.lua
+++ b/test/functional/legacy/breakindent_spec.lua
@@ -1,6 +1,7 @@
local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local clear = helpers.clear
+local command = helpers.command
local exec = helpers.exec
local feed = helpers.feed
@@ -17,20 +18,15 @@ describe('breakindent', function()
})
screen:attach()
exec([[
+ set listchars=eol:$
let &signcolumn = 'yes'
- let &showbreak = '+'
+ let &showbreak = '++'
+ let &breakindent = v:true
+ let &breakindentopt = 'shift:2'
let leftcol = win_getid()->getwininfo()->get(0, {})->get('textoff')
eval repeat('x', &columns - leftcol - 1)->setline(1)
eval 'second line'->setline(2)
]])
- screen:expect([[
- {1: }^xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
- {1: }second line |
- {0:~ }|
- {0:~ }|
- {0:~ }|
- |
- ]])
feed('AX')
screen:expect([[
{1: }xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX|
@@ -40,5 +36,18 @@ describe('breakindent', function()
{0:~ }|
{2:-- INSERT --} |
]])
+ -- No line wraps, so changing 'showbreak' should lead to the same screen.
+ command('setlocal showbreak=+')
+ screen:expect_unchanged()
+ -- The first line now wraps because of "eol" in 'listchars'.
+ command('setlocal list')
+ screen:expect{grid=[[
+ {1: }xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX|
+ {1: } {0:+^$} |
+ {1: }second line{0:$} |
+ {0:~ }|
+ {0:~ }|
+ {2:-- INSERT --} |
+ ]]}
end)
end)
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index 4e3214da71..6c1a7a6a2c 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -2886,6 +2886,15 @@ bbbbbbb]])
{1:~ }|
|
]]}
+ feed('zbx')
+ screen:expect{grid=[[
+ 1 ^12312312312312312312312312|
+ {1:+}31231231231231231231231|
+ {1:+}23123123123123123123 |
+ {1:~ }|
+ {1:~ }|
+ |
+ ]]}
end
describe('with showbreak, smoothscroll', function()
diff --git a/test/old/testdir/test_breakindent.vim b/test/old/testdir/test_breakindent.vim
index 8d64c0dc90..3ce7d1386b 100644
--- a/test/old/testdir/test_breakindent.vim
+++ b/test/old/testdir/test_breakindent.vim
@@ -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