104958cbaSBram Moolenaar" Test for variable tabstops 204958cbaSBram Moolenaar 304958cbaSBram Moolenaarif !has("vartabs") 404958cbaSBram Moolenaar finish 504958cbaSBram Moolenaarendif 604958cbaSBram Moolenaar 7a87b72ccSBram Moolenaarsource view_util.vim 864f41074SBram Moolenaarfunc s:compare_lines(expect, actual) 9a87b72ccSBram Moolenaar call assert_equal(join(a:expect, "\n"), join(a:actual, "\n")) 1064f41074SBram Moolenaarendfunc 11a87b72ccSBram Moolenaar 1264f41074SBram Moolenaarfunc Test_vartabs() 1304958cbaSBram Moolenaar new 1404958cbaSBram Moolenaar %d 1504958cbaSBram Moolenaar 1604958cbaSBram Moolenaar " Test normal operation of tabstops ... 1704958cbaSBram Moolenaar set ts=4 1804958cbaSBram Moolenaar call setline(1, join(split('aaaaa', '\zs'), "\t")) 1904958cbaSBram Moolenaar retab 8 2004958cbaSBram Moolenaar let expect = "a a\<tab>a a\<tab>a" 2104958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 2204958cbaSBram Moolenaar 2304958cbaSBram Moolenaar " ... and softtabstops 2404958cbaSBram Moolenaar set ts=8 sts=6 2504958cbaSBram Moolenaar exe "norm! Sb\<tab>b\<tab>b\<tab>b\<tab>b" 2604958cbaSBram Moolenaar let expect = "b b\<tab> b\<tab> b\<tab>b" 2704958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 2804958cbaSBram Moolenaar 2904958cbaSBram Moolenaar " Test variable tabstops. 3004958cbaSBram Moolenaar set sts=0 vts=4,8,4,8 3104958cbaSBram Moolenaar exe "norm! Sc\<tab>c\<tab>c\<tab>c\<tab>c\<tab>c" 3204958cbaSBram Moolenaar retab 8 3304958cbaSBram Moolenaar let expect = "c c\<tab> c\<tab>c\<tab>c\<tab>c" 3404958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 3504958cbaSBram Moolenaar 3604958cbaSBram Moolenaar set et vts=4,8,4,8 3704958cbaSBram Moolenaar exe "norm! Sd\<tab>d\<tab>d\<tab>d\<tab>d\<tab>d" 3804958cbaSBram Moolenaar let expect = "d d d d d d" 3904958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 4004958cbaSBram Moolenaar 4104958cbaSBram Moolenaar " Changing ts should have no effect if vts is in use. 4204958cbaSBram Moolenaar call cursor(1, 1) 4304958cbaSBram Moolenaar set ts=6 4404958cbaSBram Moolenaar exe "norm! Se\<tab>e\<tab>e\<tab>e\<tab>e\<tab>e" 4504958cbaSBram Moolenaar let expect = "e e e e e e" 4604958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 4704958cbaSBram Moolenaar 4804958cbaSBram Moolenaar " Clearing vts should revert to using ts. 4904958cbaSBram Moolenaar set vts= 5004958cbaSBram Moolenaar exe "norm! Sf\<tab>f\<tab>f\<tab>f\<tab>f\<tab>f" 5104958cbaSBram Moolenaar let expect = "f f f f f f" 5204958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 5304958cbaSBram Moolenaar 5404958cbaSBram Moolenaar " Test variable softtabstops. 5504958cbaSBram Moolenaar set noet ts=8 vsts=12,2,6 5604958cbaSBram Moolenaar exe "norm! Sg\<tab>g\<tab>g\<tab>g\<tab>g\<tab>g" 5704958cbaSBram Moolenaar let expect = "g\<tab> g g\<tab> g\<tab> g\<tab>g" 5804958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 5904958cbaSBram Moolenaar 6004958cbaSBram Moolenaar " Variable tabstops and softtabstops combined. 6104958cbaSBram Moolenaar set vsts=6,12,8 vts=4,6,8 6204958cbaSBram Moolenaar exe "norm! Sh\<tab>h\<tab>h\<tab>h\<tab>h" 6304958cbaSBram Moolenaar let expect = "h\<tab> h\<tab>\<tab>h\<tab>h\<tab>h" 6404958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 6504958cbaSBram Moolenaar 6604958cbaSBram Moolenaar " Retab with a single value, not using vts. 6704958cbaSBram Moolenaar set ts=8 sts=0 vts= vsts= 6804958cbaSBram Moolenaar exe "norm! Si\<tab>i\<tab>i\<tab>i\<tab>i" 6904958cbaSBram Moolenaar retab 4 7004958cbaSBram Moolenaar let expect = "i\<tab>\<tab>i\<tab>\<tab>i\<tab>\<tab>i\<tab>\<tab>i" 7104958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 7204958cbaSBram Moolenaar 7304958cbaSBram Moolenaar " Retab with a single value, using vts. 7404958cbaSBram Moolenaar set ts=8 sts=0 vts=6 vsts= 7504958cbaSBram Moolenaar exe "norm! Sj\<tab>j\<tab>j\<tab>j\<tab>j" 7604958cbaSBram Moolenaar retab 4 7704958cbaSBram Moolenaar let expect = "j\<tab> j\<tab>\<tab>j\<tab> j\<tab>\<tab>j" 7804958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 7904958cbaSBram Moolenaar 8004958cbaSBram Moolenaar " Retab with multiple values, not using vts. 8104958cbaSBram Moolenaar set ts=6 sts=0 vts= vsts= 8204958cbaSBram Moolenaar exe "norm! Sk\<tab>k\<tab>k\<tab>k\<tab>k\<tab>k" 8304958cbaSBram Moolenaar retab 4,8 8404958cbaSBram Moolenaar let expect = "k\<tab> k\<tab>k k\<tab> k\<tab> k" 8504958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 8604958cbaSBram Moolenaar 8704958cbaSBram Moolenaar " Retab with multiple values, using vts. 8804958cbaSBram Moolenaar set ts=8 sts=0 vts=6 vsts= 8904958cbaSBram Moolenaar exe "norm! Sl\<tab>l\<tab>l\<tab>l\<tab>l\<tab>l" 9004958cbaSBram Moolenaar retab 4,8 9104958cbaSBram Moolenaar let expect = "l\<tab> l\<tab>l l\<tab> l\<tab> l" 9204958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 9304958cbaSBram Moolenaar 9404958cbaSBram Moolenaar " Check that global and local values are set. 9504958cbaSBram Moolenaar set ts=4 vts=6 sts=8 vsts=10 9604958cbaSBram Moolenaar call assert_equal(&ts, 4) 9704958cbaSBram Moolenaar call assert_equal(&vts, '6') 9804958cbaSBram Moolenaar call assert_equal(&sts, 8) 9904958cbaSBram Moolenaar call assert_equal(&vsts, '10') 10004958cbaSBram Moolenaar new 10104958cbaSBram Moolenaar call assert_equal(&ts, 4) 10204958cbaSBram Moolenaar call assert_equal(&vts, '6') 10304958cbaSBram Moolenaar call assert_equal(&sts, 8) 10404958cbaSBram Moolenaar call assert_equal(&vsts, '10') 10504958cbaSBram Moolenaar bwipeout! 10604958cbaSBram Moolenaar 10704958cbaSBram Moolenaar " Check that local values only are set. 10804958cbaSBram Moolenaar setlocal ts=5 vts=7 sts=9 vsts=11 10904958cbaSBram Moolenaar call assert_equal(&ts, 5) 11004958cbaSBram Moolenaar call assert_equal(&vts, '7') 11104958cbaSBram Moolenaar call assert_equal(&sts, 9) 11204958cbaSBram Moolenaar call assert_equal(&vsts, '11') 11304958cbaSBram Moolenaar new 11404958cbaSBram Moolenaar call assert_equal(&ts, 4) 11504958cbaSBram Moolenaar call assert_equal(&vts, '6') 11604958cbaSBram Moolenaar call assert_equal(&sts, 8) 11704958cbaSBram Moolenaar call assert_equal(&vsts, '10') 11804958cbaSBram Moolenaar bwipeout! 11904958cbaSBram Moolenaar 12004958cbaSBram Moolenaar " Check that global values only are set. 12104958cbaSBram Moolenaar setglobal ts=6 vts=8 sts=10 vsts=12 12204958cbaSBram Moolenaar call assert_equal(&ts, 5) 12304958cbaSBram Moolenaar call assert_equal(&vts, '7') 12404958cbaSBram Moolenaar call assert_equal(&sts, 9) 12504958cbaSBram Moolenaar call assert_equal(&vsts, '11') 12604958cbaSBram Moolenaar new 12704958cbaSBram Moolenaar call assert_equal(&ts, 6) 12804958cbaSBram Moolenaar call assert_equal(&vts, '8') 12904958cbaSBram Moolenaar call assert_equal(&sts, 10) 13004958cbaSBram Moolenaar call assert_equal(&vsts, '12') 13104958cbaSBram Moolenaar bwipeout! 13204958cbaSBram Moolenaar 13304958cbaSBram Moolenaar set ts& vts& sts& vsts& et& 13404958cbaSBram Moolenaar bwipeout! 13504958cbaSBram Moolenaarendfunc 13604958cbaSBram Moolenaar 13704958cbaSBram Moolenaarfunc! Test_vartabs_breakindent() 13804958cbaSBram Moolenaar if !exists("+breakindent") 13904958cbaSBram Moolenaar return 14004958cbaSBram Moolenaar endif 14104958cbaSBram Moolenaar new 14204958cbaSBram Moolenaar %d 14304958cbaSBram Moolenaar 14404958cbaSBram Moolenaar " Test normal operation of tabstops ... 14504958cbaSBram Moolenaar set ts=4 14604958cbaSBram Moolenaar call setline(1, join(split('aaaaa', '\zs'), "\t")) 14704958cbaSBram Moolenaar retab 8 14804958cbaSBram Moolenaar let expect = "a a\<tab>a a\<tab>a" 14904958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 15004958cbaSBram Moolenaar 15104958cbaSBram Moolenaar " ... and softtabstops 15204958cbaSBram Moolenaar set ts=8 sts=6 15304958cbaSBram Moolenaar exe "norm! Sb\<tab>b\<tab>b\<tab>b\<tab>b" 15404958cbaSBram Moolenaar let expect = "b b\<tab> b\<tab> b\<tab>b" 15504958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 15604958cbaSBram Moolenaar 15704958cbaSBram Moolenaar " Test variable tabstops. 15804958cbaSBram Moolenaar set sts=0 vts=4,8,4,8 15904958cbaSBram Moolenaar exe "norm! Sc\<tab>c\<tab>c\<tab>c\<tab>c\<tab>c" 16004958cbaSBram Moolenaar retab 8 16104958cbaSBram Moolenaar let expect = "c c\<tab> c\<tab>c\<tab>c\<tab>c" 16204958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 16304958cbaSBram Moolenaar 16404958cbaSBram Moolenaar set et vts=4,8,4,8 16504958cbaSBram Moolenaar exe "norm! Sd\<tab>d\<tab>d\<tab>d\<tab>d\<tab>d" 16604958cbaSBram Moolenaar let expect = "d d d d d d" 16704958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 16804958cbaSBram Moolenaar 16904958cbaSBram Moolenaar " Changing ts should have no effect if vts is in use. 17004958cbaSBram Moolenaar call cursor(1, 1) 17104958cbaSBram Moolenaar set ts=6 17204958cbaSBram Moolenaar exe "norm! Se\<tab>e\<tab>e\<tab>e\<tab>e\<tab>e" 17304958cbaSBram Moolenaar let expect = "e e e e e e" 17404958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 17504958cbaSBram Moolenaar 17604958cbaSBram Moolenaar " Clearing vts should revert to using ts. 17704958cbaSBram Moolenaar set vts= 17804958cbaSBram Moolenaar exe "norm! Sf\<tab>f\<tab>f\<tab>f\<tab>f\<tab>f" 17904958cbaSBram Moolenaar let expect = "f f f f f f" 18004958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 18104958cbaSBram Moolenaar 18204958cbaSBram Moolenaar " Test variable softtabstops. 18304958cbaSBram Moolenaar set noet ts=8 vsts=12,2,6 18404958cbaSBram Moolenaar exe "norm! Sg\<tab>g\<tab>g\<tab>g\<tab>g\<tab>g" 18504958cbaSBram Moolenaar let expect = "g\<tab> g g\<tab> g\<tab> g\<tab>g" 18604958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 18704958cbaSBram Moolenaar 18804958cbaSBram Moolenaar " Variable tabstops and softtabstops combined. 18904958cbaSBram Moolenaar set vsts=6,12,8 vts=4,6,8 19004958cbaSBram Moolenaar exe "norm! Sh\<tab>h\<tab>h\<tab>h\<tab>h" 19104958cbaSBram Moolenaar let expect = "h\<tab> h\<tab>\<tab>h\<tab>h\<tab>h" 19204958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 19304958cbaSBram Moolenaar 19404958cbaSBram Moolenaar " Retab with a single value, not using vts. 19504958cbaSBram Moolenaar set ts=8 sts=0 vts= vsts= 19604958cbaSBram Moolenaar exe "norm! Si\<tab>i\<tab>i\<tab>i\<tab>i" 19704958cbaSBram Moolenaar retab 4 19804958cbaSBram Moolenaar let expect = "i\<tab>\<tab>i\<tab>\<tab>i\<tab>\<tab>i\<tab>\<tab>i" 19904958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 20004958cbaSBram Moolenaar 20104958cbaSBram Moolenaar " Retab with a single value, using vts. 20204958cbaSBram Moolenaar set ts=8 sts=0 vts=6 vsts= 20304958cbaSBram Moolenaar exe "norm! Sj\<tab>j\<tab>j\<tab>j\<tab>j" 20404958cbaSBram Moolenaar retab 4 20504958cbaSBram Moolenaar let expect = "j\<tab> j\<tab>\<tab>j\<tab> j\<tab>\<tab>j" 20604958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 20704958cbaSBram Moolenaar 20804958cbaSBram Moolenaar " Retab with multiple values, not using vts. 20904958cbaSBram Moolenaar set ts=6 sts=0 vts= vsts= 21004958cbaSBram Moolenaar exe "norm! Sk\<tab>k\<tab>k\<tab>k\<tab>k\<tab>k" 21104958cbaSBram Moolenaar retab 4,8 21204958cbaSBram Moolenaar let expect = "k\<tab> k\<tab>k k\<tab> k\<tab> k" 21304958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 21404958cbaSBram Moolenaar 21504958cbaSBram Moolenaar " Retab with multiple values, using vts. 21604958cbaSBram Moolenaar set ts=8 sts=0 vts=6 vsts= 21704958cbaSBram Moolenaar exe "norm! Sl\<tab>l\<tab>l\<tab>l\<tab>l\<tab>l" 21804958cbaSBram Moolenaar retab 4,8 21904958cbaSBram Moolenaar let expect = "l\<tab> l\<tab>l l\<tab> l\<tab> l" 22004958cbaSBram Moolenaar call assert_equal(expect, getline(1)) 22104958cbaSBram Moolenaar 22204958cbaSBram Moolenaar " Check that global and local values are set. 22304958cbaSBram Moolenaar set ts=4 vts=6 sts=8 vsts=10 22404958cbaSBram Moolenaar call assert_equal(&ts, 4) 22504958cbaSBram Moolenaar call assert_equal(&vts, '6') 22604958cbaSBram Moolenaar call assert_equal(&sts, 8) 22704958cbaSBram Moolenaar call assert_equal(&vsts, '10') 22804958cbaSBram Moolenaar new 22904958cbaSBram Moolenaar call assert_equal(&ts, 4) 23004958cbaSBram Moolenaar call assert_equal(&vts, '6') 23104958cbaSBram Moolenaar call assert_equal(&sts, 8) 23204958cbaSBram Moolenaar call assert_equal(&vsts, '10') 23304958cbaSBram Moolenaar bwipeout! 23404958cbaSBram Moolenaar 23504958cbaSBram Moolenaar " Check that local values only are set. 23604958cbaSBram Moolenaar setlocal ts=5 vts=7 sts=9 vsts=11 23704958cbaSBram Moolenaar call assert_equal(&ts, 5) 23804958cbaSBram Moolenaar call assert_equal(&vts, '7') 23904958cbaSBram Moolenaar call assert_equal(&sts, 9) 24004958cbaSBram Moolenaar call assert_equal(&vsts, '11') 24104958cbaSBram Moolenaar new 24204958cbaSBram Moolenaar call assert_equal(&ts, 4) 24304958cbaSBram Moolenaar call assert_equal(&vts, '6') 24404958cbaSBram Moolenaar call assert_equal(&sts, 8) 24504958cbaSBram Moolenaar call assert_equal(&vsts, '10') 24604958cbaSBram Moolenaar bwipeout! 24704958cbaSBram Moolenaar 24804958cbaSBram Moolenaar " Check that global values only are set. 24904958cbaSBram Moolenaar setglobal ts=6 vts=8 sts=10 vsts=12 25004958cbaSBram Moolenaar call assert_equal(&ts, 5) 25104958cbaSBram Moolenaar call assert_equal(&vts, '7') 25204958cbaSBram Moolenaar call assert_equal(&sts, 9) 25304958cbaSBram Moolenaar call assert_equal(&vsts, '11') 25404958cbaSBram Moolenaar new 25504958cbaSBram Moolenaar call assert_equal(&ts, 6) 25604958cbaSBram Moolenaar call assert_equal(&vts, '8') 25704958cbaSBram Moolenaar call assert_equal(&sts, 10) 25804958cbaSBram Moolenaar call assert_equal(&vsts, '12') 25904958cbaSBram Moolenaar bwipeout! 26004958cbaSBram Moolenaar 26104958cbaSBram Moolenaar bwipeout! 26204958cbaSBram Moolenaarendfunc 263a87b72ccSBram Moolenaar 26464f41074SBram Moolenaarfunc Test_vartabs_linebreak() 265307ac5c6SBram Moolenaar if winwidth(0) < 40 266a87b72ccSBram Moolenaar return 267a87b72ccSBram Moolenaar endif 268a87b72ccSBram Moolenaar new 269307ac5c6SBram Moolenaar 40vnew 270a87b72ccSBram Moolenaar %d 271307ac5c6SBram Moolenaar setl linebreak vartabstop=10,20,30,40 272a87b72ccSBram Moolenaar call setline(1, "\tx\tx\tx\tx") 273a87b72ccSBram Moolenaar 274307ac5c6SBram Moolenaar let expect = [' x ', 275307ac5c6SBram Moolenaar \ 'x x ', 276a87b72ccSBram Moolenaar \ 'x '] 277307ac5c6SBram Moolenaar let lines = ScreenLines([1, 3], winwidth(0)) 278307ac5c6SBram Moolenaar call s:compare_lines(expect, lines) 279307ac5c6SBram Moolenaar setl list listchars=tab:>- 280307ac5c6SBram Moolenaar let expect = ['>---------x>------------------ ', 281307ac5c6SBram Moolenaar \ 'x>------------------x>------------------', 282307ac5c6SBram Moolenaar \ 'x '] 283307ac5c6SBram Moolenaar let lines = ScreenLines([1, 3], winwidth(0)) 284307ac5c6SBram Moolenaar call s:compare_lines(expect, lines) 285307ac5c6SBram Moolenaar setl linebreak vartabstop=40 286307ac5c6SBram Moolenaar let expect = ['>---------------------------------------', 287307ac5c6SBram Moolenaar \ 'x>--------------------------------------', 288307ac5c6SBram Moolenaar \ 'x>--------------------------------------', 289307ac5c6SBram Moolenaar \ 'x>--------------------------------------', 290307ac5c6SBram Moolenaar \ 'x '] 291307ac5c6SBram Moolenaar let lines = ScreenLines([1, 5], winwidth(0)) 292a87b72ccSBram Moolenaar call s:compare_lines(expect, lines) 293a87b72ccSBram Moolenaar 294a87b72ccSBram Moolenaar " cleanup 295a87b72ccSBram Moolenaar bw! 296a87b72ccSBram Moolenaar bw! 297307ac5c6SBram Moolenaar set nolist listchars&vim 298a87b72ccSBram Moolenaarendfunc 29964f41074SBram Moolenaar 300*f951416aSBram Moolenaarfunc Test_vartabs_shiftwidth() 301*f951416aSBram Moolenaar "return 302*f951416aSBram Moolenaar if winwidth(0) < 40 303*f951416aSBram Moolenaar return 304*f951416aSBram Moolenaar endif 305*f951416aSBram Moolenaar new 306*f951416aSBram Moolenaar 40vnew 307*f951416aSBram Moolenaar %d 308*f951416aSBram Moolenaar" setl varsofttabstop=10,20,30,40 309*f951416aSBram Moolenaar setl shiftwidth=0 vartabstop=10,20,30,40 310*f951416aSBram Moolenaar call setline(1, "x") 311*f951416aSBram Moolenaar 312*f951416aSBram Moolenaar " Check without any change. 313*f951416aSBram Moolenaar let expect = ['x '] 314*f951416aSBram Moolenaar let lines = ScreenLines(1, winwidth(0)) 315*f951416aSBram Moolenaar call s:compare_lines(expect, lines) 316*f951416aSBram Moolenaar " Test 1: 317*f951416aSBram Moolenaar " shiftwidth depends on the indent, first check with cursor at the end of the 318*f951416aSBram Moolenaar " line (which is the same as the start of the line, since there is only one 319*f951416aSBram Moolenaar " character). 320*f951416aSBram Moolenaar norm! $>> 321*f951416aSBram Moolenaar let expect1 = [' x '] 322*f951416aSBram Moolenaar let lines = ScreenLines(1, winwidth(0)) 323*f951416aSBram Moolenaar call s:compare_lines(expect1, lines) 324*f951416aSBram Moolenaar call assert_equal(10, shiftwidth()) 325*f951416aSBram Moolenaar call assert_equal(10, shiftwidth(1)) 326*f951416aSBram Moolenaar call assert_equal(20, shiftwidth(virtcol('.'))) 327*f951416aSBram Moolenaar norm! $>> 328*f951416aSBram Moolenaar let expect2 = [' x ', '~ '] 329*f951416aSBram Moolenaar let lines = ScreenLines([1, 2], winwidth(0)) 330*f951416aSBram Moolenaar call s:compare_lines(expect2, lines) 331*f951416aSBram Moolenaar call assert_equal(20, shiftwidth(virtcol('.')-2)) 332*f951416aSBram Moolenaar call assert_equal(30, shiftwidth(virtcol('.'))) 333*f951416aSBram Moolenaar norm! $>> 334*f951416aSBram Moolenaar let expect3 = [' ', ' x ', '~ '] 335*f951416aSBram Moolenaar let lines = ScreenLines([1, 3], winwidth(0)) 336*f951416aSBram Moolenaar call s:compare_lines(expect3, lines) 337*f951416aSBram Moolenaar call assert_equal(30, shiftwidth(virtcol('.')-2)) 338*f951416aSBram Moolenaar call assert_equal(40, shiftwidth(virtcol('.'))) 339*f951416aSBram Moolenaar norm! $>> 340*f951416aSBram Moolenaar let expect4 = [' ', ' ', ' x '] 341*f951416aSBram Moolenaar let lines = ScreenLines([1, 3], winwidth(0)) 342*f951416aSBram Moolenaar call assert_equal(40, shiftwidth(virtcol('.'))) 343*f951416aSBram Moolenaar call s:compare_lines(expect4, lines) 344*f951416aSBram Moolenaar 345*f951416aSBram Moolenaar " Test 2: Put the cursor at the first column, result should be the same 346*f951416aSBram Moolenaar call setline(1, "x") 347*f951416aSBram Moolenaar norm! 0>> 348*f951416aSBram Moolenaar let lines = ScreenLines(1, winwidth(0)) 349*f951416aSBram Moolenaar call s:compare_lines(expect1, lines) 350*f951416aSBram Moolenaar norm! 0>> 351*f951416aSBram Moolenaar let lines = ScreenLines([1, 2], winwidth(0)) 352*f951416aSBram Moolenaar call s:compare_lines(expect2, lines) 353*f951416aSBram Moolenaar norm! 0>> 354*f951416aSBram Moolenaar let lines = ScreenLines([1, 3], winwidth(0)) 355*f951416aSBram Moolenaar call s:compare_lines(expect3, lines) 356*f951416aSBram Moolenaar norm! 0>> 357*f951416aSBram Moolenaar let lines = ScreenLines([1, 3], winwidth(0)) 358*f951416aSBram Moolenaar call s:compare_lines(expect4, lines) 359*f951416aSBram Moolenaar 360*f951416aSBram Moolenaar " cleanup 361*f951416aSBram Moolenaar bw! 362*f951416aSBram Moolenaar bw! 363*f951416aSBram Moolenaarendfunc 364*f951416aSBram Moolenaar 36564f41074SBram Moolenaarfunc Test_vartabs_failures() 36664f41074SBram Moolenaar call assert_fails('set vts=8,') 36764f41074SBram Moolenaar call assert_fails('set vsts=8,') 36864f41074SBram Moolenaar call assert_fails('set vts=8,,8') 36964f41074SBram Moolenaar call assert_fails('set vsts=8,,8') 37064f41074SBram Moolenaar call assert_fails('set vts=8,,8,') 37164f41074SBram Moolenaar call assert_fails('set vsts=8,,8,') 37264f41074SBram Moolenaar call assert_fails('set vts=,8') 37364f41074SBram Moolenaar call assert_fails('set vsts=,8') 37464f41074SBram Moolenaarendfunc 375