| Test for breakindent |
| |
| STARTTEST |
| :so small.vim |
| :if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif |
| :10new|:vsp|:vert resize 20 |
| :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\" |
| :set ts=4 sw=4 sts=4 breakindent |
| :fu! ScreenChar(line, width) |
| : let c='' |
| : for i in range(1,a:width) |
| : let c.=nr2char(screenchar(a:line, i)) |
| : endfor |
| : let c.="\n" |
| : for i in range(1,a:width) |
| : let c.=nr2char(screenchar(a:line+1, i)) |
| : endfor |
| : let c.="\n" |
| : for i in range(1,a:width) |
| : let c.=nr2char(screenchar(a:line+2, i)) |
| : endfor |
| : return c |
| :endfu |
| :fu DoRecordScreen() |
| : wincmd l |
| : $put =printf(\"\n%s\", g:test) |
| : $put =g:line1 |
| : wincmd p |
| :endfu |
| :set briopt=min:0 |
| :let g:test="Test 1: Simple breakindent" |
| :let line1=ScreenChar(line('.'),8) |
| :call DoRecordScreen() |
| :let g:test="Test 2: Simple breakindent + sbr=>>" |
| :set sbr=>> |
| :let line1=ScreenChar(line('.'),8) |
| :call DoRecordScreen() |
| :let g:test ="Test 3: Simple breakindent + briopt:sbr" |
| :set briopt=sbr,min:0 sbr=++ |
| :let line1=ScreenChar(line('.'),8) |
| :call DoRecordScreen() |
| :let g:test ="Test 4: Simple breakindent + min width: 18" |
| :set sbr= briopt=min:18 |
| :let line1=ScreenChar(line('.'),8) |
| :call DoRecordScreen() |
| :let g:test =" Test 5: Simple breakindent + shift by 2" |
| :set briopt=shift:2,min:0 |
| :let line1=ScreenChar(line('.'),8) |
| :call DoRecordScreen() |
| :let g:test=" Test 6: Simple breakindent + shift by -1" |
| :set briopt=shift:-1,min:0 |
| :let line1=ScreenChar(line('.'),8) |
| :call DoRecordScreen() |
| :let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr" |
| :set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 |
| :let line1=ScreenChar(line('.'),10) |
| :call DoRecordScreen() |
| :let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr" |
| :set briopt=shift:1,sbr,min:0 nu sbr=# list |
| :let line1=ScreenChar(line('.'),10) |
| :call DoRecordScreen() |
| :let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list" |
| :set briopt-=sbr |
| :let line1=ScreenChar(line('.'),10) |
| :call DoRecordScreen() |
| :let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n" |
| :set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0 |
| :let line1=ScreenChar(line('.'),10) |
| :call DoRecordScreen() |
| :wincmd p |
| :let g:test="\n Test 11: strdisplaywidth when breakindent is on" |
| :set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4 |
| :let text=getline(2) "skip leading tab when calculating text width |
| :let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times |
| :$put =g:test |
| :$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width) |
| :let g:str="\t\t\t\t\t{" |
| :let g:test=" Test 12: breakindent + long indent" |
| :wincmd p |
| :set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4 |
| :$put =g:str |
| zt:let line1=ScreenChar(1,10) |
| :wincmd p |
| :call DoRecordScreen() |
| :" |
| :" Test, that the string " a\tb\tc\td\te" is correctly |
| :" displayed in a 20 column wide window (see bug report |
| :" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ |
| :only |
| :vert 20new |
| :set all& nocp breakindent briopt=min:10 |
| :call setline(1, [" a\tb\tc\td\te", " z y x w v"]) |
| :/^\s*a |
| fbgjyl:let line1 = @0 |
| :?^\s*z |
| fygjyl:let line2 = @0 |
| :quit! |
| :$put ='Test 13: breakindent with wrapping Tab' |
| :$put =line1 |
| :$put =line2 |
| :" |
| :let g:test="Test 14: breakindent + visual blockwise delete #1" |
| :set all& breakindent viminfo+=nviminfo |
| :30vnew |
| :normal! 3a1234567890 |
| :normal! a abcde |
| :exec "normal! 0\<C-V>tex" |
| :let line1=ScreenChar(line('.'),8) |
| :call DoRecordScreen() |
| :" |
| :let g:test="Test 15: breakindent + visual blockwise delete #2" |
| :%d |
| :normal! 4a1234567890 |
| :exec "normal! >>\<C-V>3f0x" |
| :let line1=ScreenChar(line('.'),20) |
| :call DoRecordScreen() |
| :quit! |
| :" |
| :%w! test.out |
| :qa! |
| ENDTEST |
| dummy text |