view src/testdir/test_breakindent.in @ 10098:72e4b7f90465 v7.4.2320

commit https://github.com/vim/vim/commit/dda933d06c06c2792bd686d059f6ad19191ad30b Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 3 21:04:58 2016 +0200 patch 7.4.2320 Problem: Redraw problem when using 'incsearch'. Solution: Save the current view when deleting characters. (Christian Brabandt) Fix that the '" mark is set in the wrong position. Don't change the search start when using BS.
author Christian Brabandt <cb@256bit.org>
date Sat, 03 Sep 2016 21:15:06 +0200
parents f625b6302d04
children
line wrap: on
line source

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