mirror of
https://github.com/neovim/neovim.git
synced 2026-08-26 17:11:48 +00:00
Problem: 'linebreak' does not work properly when using "space" in
'listchars'.
Solution: (Hirohito Higashi, Christian Brabandt)
9bc01ebb95
121 lines
2.8 KiB
Plaintext
121 lines
2.8 KiB
Plaintext
Test for linebreak and list option (non-utf8)
|
||
|
||
STARTTEST
|
||
:so small.vim
|
||
:if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif
|
||
:set wildchar=^E
|
||
:10new|:vsp|:vert resize 20
|
||
:put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
|
||
:norm! zt
|
||
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
|
||
:fu! ScreenChar(width)
|
||
: let c=''
|
||
: for j in range(1,4)
|
||
: for i in range(1,a:width)
|
||
: let c.=nr2char(screenchar(j, i))
|
||
: endfor
|
||
: let c.="\n"
|
||
: endfor
|
||
: return c
|
||
:endfu
|
||
:fu! DoRecordScreen()
|
||
: wincmd l
|
||
: $put =printf(\"\n%s\", g:test)
|
||
: $put =g:line
|
||
: wincmd p
|
||
:endfu
|
||
:"
|
||
:let g:test="Test 1: set linebreak"
|
||
:redraw!
|
||
:let line=ScreenChar(winwidth(0))
|
||
:call DoRecordScreen()
|
||
:"
|
||
:let g:test="Test 2: set linebreak + set list"
|
||
:set linebreak list listchars=
|
||
:redraw!
|
||
:let line=ScreenChar(winwidth(0))
|
||
:call DoRecordScreen()
|
||
:"
|
||
:let g:test ="Test 3: set linebreak nolist"
|
||
:set nolist linebreak
|
||
:redraw!
|
||
:let line=ScreenChar(winwidth(0))
|
||
:call DoRecordScreen()
|
||
:"
|
||
:let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: should break!"
|
||
:set nolist linebreak ts=8
|
||
:let line="1\t".repeat('a', winwidth(0)-2)
|
||
:$put =line
|
||
:$
|
||
:norm! zt
|
||
:redraw!
|
||
:let line=ScreenChar(winwidth(0))
|
||
:call DoRecordScreen()
|
||
:let line="_S_\t bla"
|
||
:$put =line
|
||
:$
|
||
:norm! zt
|
||
:"
|
||
:let g:test ="Test 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)"
|
||
:set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab
|
||
:syn match ConcealVar contained /_/ conceal
|
||
:syn match All /.*/ contains=ConcealVar
|
||
:let line=ScreenChar(winwidth(0))
|
||
:call DoRecordScreen()
|
||
:set cpo&vim linebreak
|
||
:"
|
||
:let g:test ="Test 6: set linebreak with visual block mode"
|
||
:let line="REMOVE: this not"
|
||
:$put =g:test
|
||
:$put =line
|
||
:let line="REMOVE: aaaaaaaaaaaaa"
|
||
:$put =line
|
||
:1/^REMOVE:
|
||
0jf x:$put
|
||
:set cpo&vim linebreak
|
||
:"
|
||
:let g:test ="Test 7: set linebreak with visual block mode and v_b_A"
|
||
:$put =g:test
|
||
Golong line: 40afoobar aTARGET at end
|
||
:exe "norm! $3B\<C-v>eAx\<Esc>"
|
||
:set cpo&vim linebreak sbr=
|
||
:"
|
||
:let g:test ="Test 8: set linebreak with visual char mode and changing block"
|
||
:$put =g:test
|
||
Go1111-1111-1111-11-1111-1111-11110f-lv3lc2222bgj.
|
||
:"
|
||
:let g:test ="Test 9: using redo after block visual mode"
|
||
:$put =g:test
|
||
Go
|
||
aaa
|
||
aaa
|
||
a2k2j~e.
|
||
:"
|
||
:let g:test ="Test 10: using normal commands after block-visual"
|
||
:$put =g:test
|
||
:set linebreak
|
||
Go
|
||
abcd{ef
|
||
ghijklm
|
||
no}pqrs2k0f{c%
|
||
:"
|
||
:let g:test ="Test 11: using block replace mode after wrapping"
|
||
:$put =g:test
|
||
:set linebreak wrap
|
||
Go150aayypk147|jr0
|
||
:"
|
||
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$"
|
||
:set list listchars=space:_,trail:-,tab:>-,eol:$
|
||
:$put =g:test
|
||
:let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
|
||
:$put =line
|
||
:$
|
||
:norm! zt
|
||
:redraw!
|
||
:let line=ScreenChar(winwidth(0))
|
||
:call DoRecordScreen()
|
||
:%w! test.out
|
||
:qa!
|
||
ENDTEST
|
||
dummy text
|