16c896867SBram Moolenaar" Test for breakindent 26c896867SBram Moolenaar" 36c896867SBram Moolenaar" Note: if you get strange failures when adding new tests, it might be that 44b96df5aSBram Moolenaar" while the test is run, the breakindent caching gets in its way. 5544d3bc9SBram Moolenaar" It helps to change the tabstop setting and force a redraw (e.g. see 66c896867SBram Moolenaar" Test_breakindent08()) 78c5a278fSBram Moolenaarsource check.vim 88c5a278fSBram MoolenaarCheckOption breakindent 96c896867SBram Moolenaar 10544d3bc9SBram Moolenaarsource view_util.vim 11544d3bc9SBram Moolenaar 126c896867SBram Moolenaarlet s:input ="\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP" 136c896867SBram Moolenaar 1404958cbaSBram Moolenaarfunc s:screen_lines(lnum, width) abort 15544d3bc9SBram Moolenaar return ScreenLines([a:lnum, a:lnum + 2], a:width) 1604958cbaSBram Moolenaarendfunc 176c896867SBram Moolenaar 184a0b85adSChristian Brabandtfunc s:screen_lines2(lnums, lnume, width) abort 194a0b85adSChristian Brabandt return ScreenLines([a:lnums, a:lnume], a:width) 204a0b85adSChristian Brabandtendfunc 214a0b85adSChristian Brabandt 2204958cbaSBram Moolenaarfunc s:compare_lines(expect, actual) 23544d3bc9SBram Moolenaar call assert_equal(join(a:expect, "\n"), join(a:actual, "\n")) 2404958cbaSBram Moolenaarendfunc 25544d3bc9SBram Moolenaar 2604958cbaSBram Moolenaarfunc s:test_windows(...) 27544d3bc9SBram Moolenaar call NewWindow(10, 20) 286c896867SBram Moolenaar setl ts=4 sw=4 sts=4 breakindent 296c896867SBram Moolenaar put =s:input 30544d3bc9SBram Moolenaar exe get(a:000, 0, '') 3104958cbaSBram Moolenaarendfunc 326c896867SBram Moolenaar 3304958cbaSBram Moolenaarfunc s:close_windows(...) 34544d3bc9SBram Moolenaar call CloseWindow() 35544d3bc9SBram Moolenaar exe get(a:000, 0, '') 3604958cbaSBram Moolenaarendfunc 376c896867SBram Moolenaar 3804958cbaSBram Moolenaarfunc Test_breakindent01() 396c896867SBram Moolenaar " simple breakindent test 40544d3bc9SBram Moolenaar call s:test_windows('setl briopt=min:0') 41544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),8) 42544d3bc9SBram Moolenaar let expect = [ 43544d3bc9SBram Moolenaar \ " abcd", 44544d3bc9SBram Moolenaar \ " qrst", 45544d3bc9SBram Moolenaar \ " GHIJ", 46544d3bc9SBram Moolenaar \ ] 47544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 486c896867SBram Moolenaar call s:close_windows() 4904958cbaSBram Moolenaarendfunc 506c896867SBram Moolenaar 5104958cbaSBram Moolenaarfunc Test_breakindent01_vartabs() 5204958cbaSBram Moolenaar " like 01 but with vartabs feature 536d91bcb4SBram Moolenaar CheckFeature vartabs 5404958cbaSBram Moolenaar call s:test_windows('setl briopt=min:0 vts=4') 5504958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),8) 5604958cbaSBram Moolenaar let expect = [ 5704958cbaSBram Moolenaar \ " abcd", 5804958cbaSBram Moolenaar \ " qrst", 5904958cbaSBram Moolenaar \ " GHIJ", 6004958cbaSBram Moolenaar \ ] 6104958cbaSBram Moolenaar call s:compare_lines(expect, lines) 6204958cbaSBram Moolenaar call s:close_windows('set vts&') 6304958cbaSBram Moolenaarendfunc 6404958cbaSBram Moolenaar 6504958cbaSBram Moolenaarfunc Test_breakindent02() 666c896867SBram Moolenaar " simple breakindent test with showbreak set 67ee85702cSBram Moolenaar set sbr=>> 68ee85702cSBram Moolenaar call s:test_windows('setl briopt=min:0 sbr=') 69544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),8) 70544d3bc9SBram Moolenaar let expect = [ 71544d3bc9SBram Moolenaar \ " abcd", 72544d3bc9SBram Moolenaar \ " >>qr", 73544d3bc9SBram Moolenaar \ " >>EF", 74544d3bc9SBram Moolenaar \ ] 75544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 766c896867SBram Moolenaar call s:close_windows('set sbr=') 7704958cbaSBram Moolenaarendfunc 786c896867SBram Moolenaar 7904958cbaSBram Moolenaarfunc Test_breakindent02_vartabs() 806d91bcb4SBram Moolenaar CheckFeature vartabs 8104958cbaSBram Moolenaar " simple breakindent test with showbreak set 8204958cbaSBram Moolenaar call s:test_windows('setl briopt=min:0 sbr=>> vts=4') 8304958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),8) 8404958cbaSBram Moolenaar let expect = [ 8504958cbaSBram Moolenaar \ " abcd", 8604958cbaSBram Moolenaar \ " >>qr", 8704958cbaSBram Moolenaar \ " >>EF", 8804958cbaSBram Moolenaar \ ] 8904958cbaSBram Moolenaar call s:compare_lines(expect, lines) 9004958cbaSBram Moolenaar call s:close_windows('set sbr= vts&') 9104958cbaSBram Moolenaarendfunc 9204958cbaSBram Moolenaar 9304958cbaSBram Moolenaarfunc Test_breakindent03() 946c896867SBram Moolenaar " simple breakindent test with showbreak set and briopt including sbr 95544d3bc9SBram Moolenaar call s:test_windows('setl briopt=sbr,min:0 sbr=++') 96544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),8) 97544d3bc9SBram Moolenaar let expect = [ 98544d3bc9SBram Moolenaar \ " abcd", 99544d3bc9SBram Moolenaar \ "++ qrst", 100544d3bc9SBram Moolenaar \ "++ GHIJ", 101544d3bc9SBram Moolenaar \ ] 102544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 1036c896867SBram Moolenaar " clean up 1046c896867SBram Moolenaar call s:close_windows('set sbr=') 10504958cbaSBram Moolenaarendfunc 1066c896867SBram Moolenaar 10704958cbaSBram Moolenaarfunc Test_breakindent03_vartabs() 10804958cbaSBram Moolenaar " simple breakindent test with showbreak set and briopt including sbr 1096d91bcb4SBram Moolenaar CheckFeature vartabs 11004958cbaSBram Moolenaar call s:test_windows('setl briopt=sbr,min:0 sbr=++ vts=4') 11104958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),8) 11204958cbaSBram Moolenaar let expect = [ 11304958cbaSBram Moolenaar \ " abcd", 11404958cbaSBram Moolenaar \ "++ qrst", 11504958cbaSBram Moolenaar \ "++ GHIJ", 11604958cbaSBram Moolenaar \ ] 11704958cbaSBram Moolenaar call s:compare_lines(expect, lines) 11804958cbaSBram Moolenaar " clean up 11904958cbaSBram Moolenaar call s:close_windows('set sbr= vts&') 12004958cbaSBram Moolenaarendfunc 12104958cbaSBram Moolenaar 12204958cbaSBram Moolenaarfunc Test_breakindent04() 1236c896867SBram Moolenaar " breakindent set with min width 18 124ee85702cSBram Moolenaar set sbr=<<< 125ee85702cSBram Moolenaar call s:test_windows('setl sbr=NONE briopt=min:18') 126544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),8) 127544d3bc9SBram Moolenaar let expect = [ 128544d3bc9SBram Moolenaar \ " abcd", 129544d3bc9SBram Moolenaar \ " qrstuv", 130544d3bc9SBram Moolenaar \ " IJKLMN", 131544d3bc9SBram Moolenaar \ ] 132544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 1336c896867SBram Moolenaar " clean up 1346c896867SBram Moolenaar call s:close_windows('set sbr=') 135ee85702cSBram Moolenaar set sbr= 13604958cbaSBram Moolenaarendfunc 1376c896867SBram Moolenaar 13804958cbaSBram Moolenaarfunc Test_breakindent04_vartabs() 13904958cbaSBram Moolenaar " breakindent set with min width 18 1406d91bcb4SBram Moolenaar CheckFeature vartabs 14104958cbaSBram Moolenaar call s:test_windows('setl sbr= briopt=min:18 vts=4') 14204958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),8) 14304958cbaSBram Moolenaar let expect = [ 14404958cbaSBram Moolenaar \ " abcd", 14504958cbaSBram Moolenaar \ " qrstuv", 14604958cbaSBram Moolenaar \ " IJKLMN", 14704958cbaSBram Moolenaar \ ] 14804958cbaSBram Moolenaar call s:compare_lines(expect, lines) 14904958cbaSBram Moolenaar " clean up 15004958cbaSBram Moolenaar call s:close_windows('set sbr= vts&') 15104958cbaSBram Moolenaarendfunc 15204958cbaSBram Moolenaar 15304958cbaSBram Moolenaarfunc Test_breakindent05() 1546c896867SBram Moolenaar " breakindent set and shift by 2 155544d3bc9SBram Moolenaar call s:test_windows('setl briopt=shift:2,min:0') 156544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),8) 157544d3bc9SBram Moolenaar let expect = [ 158544d3bc9SBram Moolenaar \ " abcd", 159544d3bc9SBram Moolenaar \ " qr", 160544d3bc9SBram Moolenaar \ " EF", 161544d3bc9SBram Moolenaar \ ] 162544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 1636c896867SBram Moolenaar call s:close_windows() 16404958cbaSBram Moolenaarendfunc 1656c896867SBram Moolenaar 16604958cbaSBram Moolenaarfunc Test_breakindent05_vartabs() 16704958cbaSBram Moolenaar " breakindent set and shift by 2 1686d91bcb4SBram Moolenaar CheckFeature vartabs 16904958cbaSBram Moolenaar call s:test_windows('setl briopt=shift:2,min:0 vts=4') 17004958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),8) 17104958cbaSBram Moolenaar let expect = [ 17204958cbaSBram Moolenaar \ " abcd", 17304958cbaSBram Moolenaar \ " qr", 17404958cbaSBram Moolenaar \ " EF", 17504958cbaSBram Moolenaar \ ] 17604958cbaSBram Moolenaar call s:compare_lines(expect, lines) 17704958cbaSBram Moolenaar call s:close_windows('set vts&') 17804958cbaSBram Moolenaarendfunc 17904958cbaSBram Moolenaar 18004958cbaSBram Moolenaarfunc Test_breakindent06() 1816c896867SBram Moolenaar " breakindent set and shift by -1 182544d3bc9SBram Moolenaar call s:test_windows('setl briopt=shift:-1,min:0') 183544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),8) 184544d3bc9SBram Moolenaar let expect = [ 185544d3bc9SBram Moolenaar \ " abcd", 186544d3bc9SBram Moolenaar \ " qrstu", 187544d3bc9SBram Moolenaar \ " HIJKL", 188544d3bc9SBram Moolenaar \ ] 189544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 1906c896867SBram Moolenaar call s:close_windows() 19104958cbaSBram Moolenaarendfunc 1926c896867SBram Moolenaar 19304958cbaSBram Moolenaarfunc Test_breakindent06_vartabs() 19404958cbaSBram Moolenaar " breakindent set and shift by -1 1956d91bcb4SBram Moolenaar CheckFeature vartabs 19604958cbaSBram Moolenaar call s:test_windows('setl briopt=shift:-1,min:0 vts=4') 19704958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),8) 19804958cbaSBram Moolenaar let expect = [ 19904958cbaSBram Moolenaar \ " abcd", 20004958cbaSBram Moolenaar \ " qrstu", 20104958cbaSBram Moolenaar \ " HIJKL", 20204958cbaSBram Moolenaar \ ] 20304958cbaSBram Moolenaar call s:compare_lines(expect, lines) 20404958cbaSBram Moolenaar call s:close_windows('set vts&') 20504958cbaSBram Moolenaarendfunc 20604958cbaSBram Moolenaar 20704958cbaSBram Moolenaarfunc Test_breakindent07() 2086c896867SBram Moolenaar " breakindent set and shift by 1, Number set sbr=? and briopt:sbr 209544d3bc9SBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 cpo+=n') 210544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),10) 211544d3bc9SBram Moolenaar let expect = [ 212544d3bc9SBram Moolenaar \ " 2 ab", 213544d3bc9SBram Moolenaar \ "? m", 214544d3bc9SBram Moolenaar \ "? x", 215544d3bc9SBram Moolenaar \ ] 216544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 2176c896867SBram Moolenaar " clean up 2186c896867SBram Moolenaar call s:close_windows('set sbr= cpo-=n') 21904958cbaSBram Moolenaarendfunc 2206c896867SBram Moolenaar 22104958cbaSBram Moolenaarfunc Test_breakindent07_vartabs() 2226d91bcb4SBram Moolenaar CheckFeature vartabs 22304958cbaSBram Moolenaar " breakindent set and shift by 1, Number set sbr=? and briopt:sbr 22404958cbaSBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 cpo+=n vts=4') 22504958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),10) 22604958cbaSBram Moolenaar let expect = [ 22704958cbaSBram Moolenaar \ " 2 ab", 22804958cbaSBram Moolenaar \ "? m", 22904958cbaSBram Moolenaar \ "? x", 23004958cbaSBram Moolenaar \ ] 23104958cbaSBram Moolenaar call s:compare_lines(expect, lines) 23204958cbaSBram Moolenaar " clean up 23304958cbaSBram Moolenaar call s:close_windows('set sbr= cpo-=n vts&') 23404958cbaSBram Moolenaarendfunc 23504958cbaSBram Moolenaar 23604958cbaSBram Moolenaarfunc Test_breakindent07a() 2376c896867SBram Moolenaar " breakindent set and shift by 1, Number set sbr=? and briopt:sbr 238544d3bc9SBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4') 239544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),10) 240544d3bc9SBram Moolenaar let expect = [ 241544d3bc9SBram Moolenaar \ " 2 ab", 242544d3bc9SBram Moolenaar \ " ? m", 243544d3bc9SBram Moolenaar \ " ? x", 244544d3bc9SBram Moolenaar \ ] 245544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 2466c896867SBram Moolenaar " clean up 2476c896867SBram Moolenaar call s:close_windows('set sbr=') 24804958cbaSBram Moolenaarendfunc 2496c896867SBram Moolenaar 25004958cbaSBram Moolenaarfunc Test_breakindent07a_vartabs() 2516d91bcb4SBram Moolenaar CheckFeature vartabs 25204958cbaSBram Moolenaar " breakindent set and shift by 1, Number set sbr=? and briopt:sbr 25304958cbaSBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 vts=4') 25404958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),10) 25504958cbaSBram Moolenaar let expect = [ 25604958cbaSBram Moolenaar \ " 2 ab", 25704958cbaSBram Moolenaar \ " ? m", 25804958cbaSBram Moolenaar \ " ? x", 25904958cbaSBram Moolenaar \ ] 26004958cbaSBram Moolenaar call s:compare_lines(expect, lines) 26104958cbaSBram Moolenaar " clean up 26204958cbaSBram Moolenaar call s:close_windows('set sbr= vts&') 26304958cbaSBram Moolenaarendfunc 26404958cbaSBram Moolenaar 26504958cbaSBram Moolenaarfunc Test_breakindent08() 2666c896867SBram Moolenaar " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr 267544d3bc9SBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list cpo+=n ts=4') 2686c896867SBram Moolenaar " make sure, cache is invalidated! 2696c896867SBram Moolenaar set ts=8 2706c896867SBram Moolenaar redraw! 2716c896867SBram Moolenaar set ts=4 2726c896867SBram Moolenaar redraw! 273544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),10) 274544d3bc9SBram Moolenaar let expect = [ 275544d3bc9SBram Moolenaar \ " 2 ^Iabcd", 276544d3bc9SBram Moolenaar \ "# opq", 277544d3bc9SBram Moolenaar \ "# BCD", 278544d3bc9SBram Moolenaar \ ] 279544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 2806c896867SBram Moolenaar call s:close_windows('set sbr= cpo-=n') 28104958cbaSBram Moolenaarendfunc 2826c896867SBram Moolenaar 28304958cbaSBram Moolenaarfunc Test_breakindent08_vartabs() 2846d91bcb4SBram Moolenaar CheckFeature vartabs 28504958cbaSBram Moolenaar " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr 28604958cbaSBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list cpo+=n ts=4 vts=4') 28704958cbaSBram Moolenaar " make sure, cache is invalidated! 28804958cbaSBram Moolenaar set ts=8 28904958cbaSBram Moolenaar redraw! 29004958cbaSBram Moolenaar set ts=4 29104958cbaSBram Moolenaar redraw! 29204958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),10) 29304958cbaSBram Moolenaar let expect = [ 29404958cbaSBram Moolenaar \ " 2 ^Iabcd", 29504958cbaSBram Moolenaar \ "# opq", 29604958cbaSBram Moolenaar \ "# BCD", 29704958cbaSBram Moolenaar \ ] 29804958cbaSBram Moolenaar call s:compare_lines(expect, lines) 29904958cbaSBram Moolenaar call s:close_windows('set sbr= cpo-=n vts&') 30004958cbaSBram Moolenaarendfunc 30104958cbaSBram Moolenaar 30204958cbaSBram Moolenaarfunc Test_breakindent08a() 3036c896867SBram Moolenaar " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr 304544d3bc9SBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list') 305544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),10) 306544d3bc9SBram Moolenaar let expect = [ 307544d3bc9SBram Moolenaar \ " 2 ^Iabcd", 308544d3bc9SBram Moolenaar \ " # opq", 309544d3bc9SBram Moolenaar \ " # BCD", 310544d3bc9SBram Moolenaar \ ] 311544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 3126c896867SBram Moolenaar call s:close_windows('set sbr=') 31304958cbaSBram Moolenaarendfunc 3146c896867SBram Moolenaar 31504958cbaSBram Moolenaarfunc Test_breakindent08a_vartabs() 3166d91bcb4SBram Moolenaar CheckFeature vartabs 31704958cbaSBram Moolenaar " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr 31804958cbaSBram Moolenaar call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list vts=4') 31904958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),10) 32004958cbaSBram Moolenaar let expect = [ 32104958cbaSBram Moolenaar \ " 2 ^Iabcd", 32204958cbaSBram Moolenaar \ " # opq", 32304958cbaSBram Moolenaar \ " # BCD", 32404958cbaSBram Moolenaar \ ] 32504958cbaSBram Moolenaar call s:compare_lines(expect, lines) 32604958cbaSBram Moolenaar call s:close_windows('set sbr= vts&') 32704958cbaSBram Moolenaarendfunc 32804958cbaSBram Moolenaar 32904958cbaSBram Moolenaarfunc Test_breakindent09() 3306c896867SBram Moolenaar " breakindent set and shift by 1, Number and list set sbr=# 331544d3bc9SBram Moolenaar call s:test_windows('setl briopt=shift:1,min:0 nu nuw=4 sbr=# list') 332544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),10) 333544d3bc9SBram Moolenaar let expect = [ 334544d3bc9SBram Moolenaar \ " 2 ^Iabcd", 335544d3bc9SBram Moolenaar \ " #op", 336544d3bc9SBram Moolenaar \ " #AB", 337544d3bc9SBram Moolenaar \ ] 338544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 3396c896867SBram Moolenaar call s:close_windows('set sbr=') 34004958cbaSBram Moolenaarendfunc 3416c896867SBram Moolenaar 34204958cbaSBram Moolenaarfunc Test_breakindent09_vartabs() 3436d91bcb4SBram Moolenaar CheckFeature vartabs 34404958cbaSBram Moolenaar " breakindent set and shift by 1, Number and list set sbr=# 34504958cbaSBram Moolenaar call s:test_windows('setl briopt=shift:1,min:0 nu nuw=4 sbr=# list vts=4') 34604958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),10) 34704958cbaSBram Moolenaar let expect = [ 34804958cbaSBram Moolenaar \ " 2 ^Iabcd", 34904958cbaSBram Moolenaar \ " #op", 35004958cbaSBram Moolenaar \ " #AB", 35104958cbaSBram Moolenaar \ ] 35204958cbaSBram Moolenaar call s:compare_lines(expect, lines) 35304958cbaSBram Moolenaar call s:close_windows('set sbr= vts&') 35404958cbaSBram Moolenaarendfunc 35504958cbaSBram Moolenaar 35604958cbaSBram Moolenaarfunc Test_breakindent10() 3576c896867SBram Moolenaar " breakindent set, Number set sbr=~ 358544d3bc9SBram Moolenaar call s:test_windows('setl cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0') 3596c896867SBram Moolenaar " make sure, cache is invalidated! 3606c896867SBram Moolenaar set ts=8 3616c896867SBram Moolenaar redraw! 3626c896867SBram Moolenaar set ts=4 3636c896867SBram Moolenaar redraw! 364544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),10) 365544d3bc9SBram Moolenaar let expect = [ 366544d3bc9SBram Moolenaar \ " 2 ab", 367544d3bc9SBram Moolenaar \ "~ mn", 368544d3bc9SBram Moolenaar \ "~ yz", 369544d3bc9SBram Moolenaar \ ] 370544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 3716c896867SBram Moolenaar call s:close_windows('set sbr= cpo-=n') 37204958cbaSBram Moolenaarendfunc 3736c896867SBram Moolenaar 37404958cbaSBram Moolenaarfunc Test_breakindent10_vartabs() 3756d91bcb4SBram Moolenaar CheckFeature vartabs 37604958cbaSBram Moolenaar " breakindent set, Number set sbr=~ 37704958cbaSBram Moolenaar call s:test_windows('setl cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0 vts=4') 37804958cbaSBram Moolenaar " make sure, cache is invalidated! 37904958cbaSBram Moolenaar set ts=8 38004958cbaSBram Moolenaar redraw! 38104958cbaSBram Moolenaar set ts=4 38204958cbaSBram Moolenaar redraw! 38304958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),10) 38404958cbaSBram Moolenaar let expect = [ 38504958cbaSBram Moolenaar \ " 2 ab", 38604958cbaSBram Moolenaar \ "~ mn", 38704958cbaSBram Moolenaar \ "~ yz", 38804958cbaSBram Moolenaar \ ] 38904958cbaSBram Moolenaar call s:compare_lines(expect, lines) 39004958cbaSBram Moolenaar call s:close_windows('set sbr= cpo-=n vts&') 39104958cbaSBram Moolenaarendfunc 39204958cbaSBram Moolenaar 39304958cbaSBram Moolenaarfunc Test_breakindent11() 3946c896867SBram Moolenaar " test strdisplaywidth() 395544d3bc9SBram Moolenaar call s:test_windows('setl cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4') 3966c896867SBram Moolenaar let text = getline(2) 3976c896867SBram Moolenaar let width = strlen(text[1:]) + indent(2) + strlen(&sbr) * 3 " text wraps 3 times 3986c896867SBram Moolenaar call assert_equal(width, strdisplaywidth(text)) 3996c896867SBram Moolenaar call s:close_windows('set sbr=') 4000e05de46SBram Moolenaar call assert_equal(4, strdisplaywidth("\t", 4)) 40104958cbaSBram Moolenaarendfunc 4026c896867SBram Moolenaar 40304958cbaSBram Moolenaarfunc Test_breakindent11_vartabs() 4046d91bcb4SBram Moolenaar CheckFeature vartabs 40504958cbaSBram Moolenaar " test strdisplaywidth() 40604958cbaSBram Moolenaar call s:test_windows('setl cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4 vts=4') 40704958cbaSBram Moolenaar let text = getline(2) 408f9f24ce7SBram Moolenaar let width = strlen(text[1:]) + 2->indent() + strlen(&sbr) * 3 " text wraps 3 times 409f6ed61e1SBram Moolenaar call assert_equal(width, text->strdisplaywidth()) 41004958cbaSBram Moolenaar call s:close_windows('set sbr= vts&') 41104958cbaSBram Moolenaarendfunc 41204958cbaSBram Moolenaar 41304958cbaSBram Moolenaarfunc Test_breakindent12() 4146c896867SBram Moolenaar " test breakindent with long indent 4156c896867SBram Moolenaar let s:input = "\t\t\t\t\t{" 416544d3bc9SBram Moolenaar call s:test_windows('setl breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4 list listchars=tab:>-') 417544d3bc9SBram Moolenaar let lines = s:screen_lines(2,16) 418544d3bc9SBram Moolenaar let expect = [ 419544d3bc9SBram Moolenaar \ " 2 >--->--->--->", 420544d3bc9SBram Moolenaar \ " ---{ ", 421544d3bc9SBram Moolenaar \ "~ ", 422544d3bc9SBram Moolenaar \ ] 423544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 4246c896867SBram Moolenaar call s:close_windows('set nuw=4 listchars=') 42504958cbaSBram Moolenaarendfunc 4266c896867SBram Moolenaar 42704958cbaSBram Moolenaarfunc Test_breakindent12_vartabs() 4286d91bcb4SBram Moolenaar CheckFeature vartabs 42904958cbaSBram Moolenaar " test breakindent with long indent 43004958cbaSBram Moolenaar let s:input = "\t\t\t\t\t{" 43104958cbaSBram Moolenaar call s:test_windows('setl breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4 list listchars=tab:>- vts=4') 43204958cbaSBram Moolenaar let lines = s:screen_lines(2,16) 43304958cbaSBram Moolenaar let expect = [ 43404958cbaSBram Moolenaar \ " 2 >--->--->--->", 43504958cbaSBram Moolenaar \ " ---{ ", 43604958cbaSBram Moolenaar \ "~ ", 43704958cbaSBram Moolenaar \ ] 43804958cbaSBram Moolenaar call s:compare_lines(expect, lines) 43904958cbaSBram Moolenaar call s:close_windows('set nuw=4 listchars= vts&') 44004958cbaSBram Moolenaarendfunc 44104958cbaSBram Moolenaar 44204958cbaSBram Moolenaarfunc Test_breakindent13() 4436c896867SBram Moolenaar let s:input = "" 444544d3bc9SBram Moolenaar call s:test_windows('setl breakindent briopt=min:10 ts=8') 4456c896867SBram Moolenaar vert resize 20 4466c896867SBram Moolenaar call setline(1, [" a\tb\tc\td\te", " z y x w v"]) 4476c896867SBram Moolenaar 1 4486c896867SBram Moolenaar norm! fbgj"ayl 4496c896867SBram Moolenaar 2 4506c896867SBram Moolenaar norm! fygj"byl 4516c896867SBram Moolenaar call assert_equal('d', @a) 4526c896867SBram Moolenaar call assert_equal('w', @b) 4536c896867SBram Moolenaar call s:close_windows() 45404958cbaSBram Moolenaarendfunc 4556c896867SBram Moolenaar 45604958cbaSBram Moolenaarfunc Test_breakindent13_vartabs() 4576d91bcb4SBram Moolenaar CheckFeature vartabs 45804958cbaSBram Moolenaar let s:input = "" 45904958cbaSBram Moolenaar call s:test_windows('setl breakindent briopt=min:10 ts=8 vts=8') 46004958cbaSBram Moolenaar vert resize 20 46104958cbaSBram Moolenaar call setline(1, [" a\tb\tc\td\te", " z y x w v"]) 46204958cbaSBram Moolenaar 1 46304958cbaSBram Moolenaar norm! fbgj"ayl 46404958cbaSBram Moolenaar 2 46504958cbaSBram Moolenaar norm! fygj"byl 46604958cbaSBram Moolenaar call assert_equal('d', @a) 46704958cbaSBram Moolenaar call assert_equal('w', @b) 46804958cbaSBram Moolenaar call s:close_windows('set vts&') 46904958cbaSBram Moolenaarendfunc 47004958cbaSBram Moolenaar 47104958cbaSBram Moolenaarfunc Test_breakindent14() 4726c896867SBram Moolenaar let s:input = "" 473544d3bc9SBram Moolenaar call s:test_windows('setl breakindent briopt= ts=8') 4746c896867SBram Moolenaar vert resize 30 4756c896867SBram Moolenaar norm! 3a1234567890 4766c896867SBram Moolenaar norm! a abcde 4776c896867SBram Moolenaar exec "norm! 0\<C-V>tex" 478544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),8) 479544d3bc9SBram Moolenaar let expect = [ 480544d3bc9SBram Moolenaar \ "e ", 481544d3bc9SBram Moolenaar \ "~ ", 482544d3bc9SBram Moolenaar \ "~ ", 483544d3bc9SBram Moolenaar \ ] 484544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 4856c896867SBram Moolenaar call s:close_windows() 48604958cbaSBram Moolenaarendfunc 4876c896867SBram Moolenaar 48804958cbaSBram Moolenaarfunc Test_breakindent14_vartabs() 4896d91bcb4SBram Moolenaar CheckFeature vartabs 49004958cbaSBram Moolenaar let s:input = "" 49104958cbaSBram Moolenaar call s:test_windows('setl breakindent briopt= ts=8 vts=8') 49204958cbaSBram Moolenaar vert resize 30 49304958cbaSBram Moolenaar norm! 3a1234567890 49404958cbaSBram Moolenaar norm! a abcde 49504958cbaSBram Moolenaar exec "norm! 0\<C-V>tex" 49604958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),8) 49704958cbaSBram Moolenaar let expect = [ 49804958cbaSBram Moolenaar \ "e ", 49904958cbaSBram Moolenaar \ "~ ", 50004958cbaSBram Moolenaar \ "~ ", 50104958cbaSBram Moolenaar \ ] 50204958cbaSBram Moolenaar call s:compare_lines(expect, lines) 50304958cbaSBram Moolenaar call s:close_windows('set vts&') 50404958cbaSBram Moolenaarendfunc 50504958cbaSBram Moolenaar 50604958cbaSBram Moolenaarfunc Test_breakindent15() 5076c896867SBram Moolenaar let s:input = "" 508544d3bc9SBram Moolenaar call s:test_windows('setl breakindent briopt= ts=8 sw=8') 5096c896867SBram Moolenaar vert resize 30 5106c896867SBram Moolenaar norm! 4a1234567890 5116c896867SBram Moolenaar exe "normal! >>\<C-V>3f0x" 512544d3bc9SBram Moolenaar let lines = s:screen_lines(line('.'),20) 513544d3bc9SBram Moolenaar let expect = [ 514544d3bc9SBram Moolenaar \ " 1234567890 ", 515544d3bc9SBram Moolenaar \ "~ ", 516544d3bc9SBram Moolenaar \ "~ ", 517544d3bc9SBram Moolenaar \ ] 518544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 5196c896867SBram Moolenaar call s:close_windows() 52004958cbaSBram Moolenaarendfunc 5216c896867SBram Moolenaar 52204958cbaSBram Moolenaarfunc Test_breakindent15_vartabs() 5236d91bcb4SBram Moolenaar CheckFeature vartabs 52404958cbaSBram Moolenaar let s:input = "" 52504958cbaSBram Moolenaar call s:test_windows('setl breakindent briopt= ts=8 sw=8 vts=8') 52604958cbaSBram Moolenaar vert resize 30 52704958cbaSBram Moolenaar norm! 4a1234567890 52804958cbaSBram Moolenaar exe "normal! >>\<C-V>3f0x" 52904958cbaSBram Moolenaar let lines = s:screen_lines(line('.'),20) 53004958cbaSBram Moolenaar let expect = [ 53104958cbaSBram Moolenaar \ " 1234567890 ", 53204958cbaSBram Moolenaar \ "~ ", 53304958cbaSBram Moolenaar \ "~ ", 53404958cbaSBram Moolenaar \ ] 53504958cbaSBram Moolenaar call s:compare_lines(expect, lines) 53604958cbaSBram Moolenaar call s:close_windows('set vts&') 53704958cbaSBram Moolenaarendfunc 53804958cbaSBram Moolenaar 53904958cbaSBram Moolenaarfunc Test_breakindent16() 5406c896867SBram Moolenaar " Check that overlong lines are indented correctly. 5416c896867SBram Moolenaar let s:input = "" 542544d3bc9SBram Moolenaar call s:test_windows('setl breakindent briopt=min:0 ts=4') 5436c896867SBram Moolenaar call setline(1, "\t".repeat("1234567890", 10)) 5446c896867SBram Moolenaar resize 6 5456c896867SBram Moolenaar norm! 1gg$ 5466c896867SBram Moolenaar redraw! 547544d3bc9SBram Moolenaar let lines = s:screen_lines(1,10) 548544d3bc9SBram Moolenaar let expect = [ 549544d3bc9SBram Moolenaar \ " 789012", 550544d3bc9SBram Moolenaar \ " 345678", 551abc39ab6SBram Moolenaar \ " 901234", 552544d3bc9SBram Moolenaar \ ] 553544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 554544d3bc9SBram Moolenaar let lines = s:screen_lines(4,10) 555544d3bc9SBram Moolenaar let expect = [ 556544d3bc9SBram Moolenaar \ " 567890", 557544d3bc9SBram Moolenaar \ " 123456", 558abc39ab6SBram Moolenaar \ " 7890 ", 559544d3bc9SBram Moolenaar \ ] 560544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 5616c896867SBram Moolenaar call s:close_windows() 56204958cbaSBram Moolenaarendfunc 56304958cbaSBram Moolenaar 56404958cbaSBram Moolenaarfunc Test_breakindent16_vartabs() 5656d91bcb4SBram Moolenaar CheckFeature vartabs 56604958cbaSBram Moolenaar " Check that overlong lines are indented correctly. 56704958cbaSBram Moolenaar let s:input = "" 56804958cbaSBram Moolenaar call s:test_windows('setl breakindent briopt=min:0 ts=4 vts=4') 56904958cbaSBram Moolenaar call setline(1, "\t".repeat("1234567890", 10)) 57004958cbaSBram Moolenaar resize 6 57104958cbaSBram Moolenaar norm! 1gg$ 57204958cbaSBram Moolenaar redraw! 57304958cbaSBram Moolenaar let lines = s:screen_lines(1,10) 57404958cbaSBram Moolenaar let expect = [ 57504958cbaSBram Moolenaar \ " 789012", 57604958cbaSBram Moolenaar \ " 345678", 57704958cbaSBram Moolenaar \ " 901234", 57804958cbaSBram Moolenaar \ ] 57904958cbaSBram Moolenaar call s:compare_lines(expect, lines) 58004958cbaSBram Moolenaar let lines = s:screen_lines(4,10) 58104958cbaSBram Moolenaar let expect = [ 58204958cbaSBram Moolenaar \ " 567890", 58304958cbaSBram Moolenaar \ " 123456", 58404958cbaSBram Moolenaar \ " 7890 ", 58504958cbaSBram Moolenaar \ ] 58604958cbaSBram Moolenaar call s:compare_lines(expect, lines) 58704958cbaSBram Moolenaar call s:close_windows('set vts&') 58804958cbaSBram Moolenaarendfunc 5892f7b7b1eSBram Moolenaar 5902f7b7b1eSBram Moolenaarfunc Test_breakindent17_vartabs() 5916d91bcb4SBram Moolenaar CheckFeature vartabs 5922f7b7b1eSBram Moolenaar let s:input = "" 5932f7b7b1eSBram Moolenaar call s:test_windows('setl breakindent list listchars=tab:<-> showbreak=+++') 5942f7b7b1eSBram Moolenaar call setline(1, "\t" . repeat('a', 63)) 5952f7b7b1eSBram Moolenaar vert resize 30 5962f7b7b1eSBram Moolenaar norm! 1gg$ 5972f7b7b1eSBram Moolenaar redraw! 5982f7b7b1eSBram Moolenaar let lines = s:screen_lines(1, 30) 5992f7b7b1eSBram Moolenaar let expect = [ 6002f7b7b1eSBram Moolenaar \ "<-->aaaaaaaaaaaaaaaaaaaaaaaaaa", 6012f7b7b1eSBram Moolenaar \ " +++aaaaaaaaaaaaaaaaaaaaaaa", 6022f7b7b1eSBram Moolenaar \ " +++aaaaaaaaaaaaaa ", 6032f7b7b1eSBram Moolenaar \ ] 6042f7b7b1eSBram Moolenaar call s:compare_lines(expect, lines) 6052f7b7b1eSBram Moolenaar call s:close_windows('set breakindent& list& listchars& showbreak&') 6062f7b7b1eSBram Moolenaarendfunc 6072f7b7b1eSBram Moolenaar 6082f7b7b1eSBram Moolenaarfunc Test_breakindent18_vartabs() 6096d91bcb4SBram Moolenaar CheckFeature vartabs 6102f7b7b1eSBram Moolenaar let s:input = "" 6112f7b7b1eSBram Moolenaar call s:test_windows('setl breakindent list listchars=tab:<->') 6122f7b7b1eSBram Moolenaar call setline(1, "\t" . repeat('a', 63)) 6132f7b7b1eSBram Moolenaar vert resize 30 6142f7b7b1eSBram Moolenaar norm! 1gg$ 6152f7b7b1eSBram Moolenaar redraw! 6162f7b7b1eSBram Moolenaar let lines = s:screen_lines(1, 30) 6172f7b7b1eSBram Moolenaar let expect = [ 6182f7b7b1eSBram Moolenaar \ "<-->aaaaaaaaaaaaaaaaaaaaaaaaaa", 6192f7b7b1eSBram Moolenaar \ " aaaaaaaaaaaaaaaaaaaaaaaaaa", 6202f7b7b1eSBram Moolenaar \ " aaaaaaaaaaa ", 6212f7b7b1eSBram Moolenaar \ ] 6222f7b7b1eSBram Moolenaar call s:compare_lines(expect, lines) 6232f7b7b1eSBram Moolenaar call s:close_windows('set breakindent& list& listchars&') 6242f7b7b1eSBram Moolenaarendfunc 6252f7b7b1eSBram Moolenaar 626dfede9a7SBram Moolenaarfunc Test_breakindent19_sbr_nextpage() 627dfede9a7SBram Moolenaar let s:input = "" 628dfede9a7SBram Moolenaar call s:test_windows('setl breakindent briopt=shift:2,sbr,min:18 sbr=>') 629dfede9a7SBram Moolenaar call setline(1, repeat('a', 200)) 630dfede9a7SBram Moolenaar norm! 1gg 631dfede9a7SBram Moolenaar redraw! 632dfede9a7SBram Moolenaar let lines = s:screen_lines(1, 20) 633dfede9a7SBram Moolenaar let expect = [ 634dfede9a7SBram Moolenaar \ "aaaaaaaaaaaaaaaaaaaa", 635dfede9a7SBram Moolenaar \ "> aaaaaaaaaaaaaaaaaa", 636dfede9a7SBram Moolenaar \ "> aaaaaaaaaaaaaaaaaa", 637dfede9a7SBram Moolenaar \ ] 638dfede9a7SBram Moolenaar call s:compare_lines(expect, lines) 639dfede9a7SBram Moolenaar " Scroll down one screen line 640dfede9a7SBram Moolenaar setl scrolloff=5 6415202929dSBram Moolenaar norm! 5gj 642dfede9a7SBram Moolenaar let lines = s:screen_lines(1, 20) 643dfede9a7SBram Moolenaar let expect = [ 6445202929dSBram Moolenaar \ "aaaaaaaaaaaaaaaaaaaa", 645dfede9a7SBram Moolenaar \ "> aaaaaaaaaaaaaaaaaa", 646dfede9a7SBram Moolenaar \ "> aaaaaaaaaaaaaaaaaa", 647dfede9a7SBram Moolenaar \ ] 648dfede9a7SBram Moolenaar call s:compare_lines(expect, lines) 6495202929dSBram Moolenaar redraw! 6505202929dSBram Moolenaar " moving the cursor doesn't change the text offset 6515202929dSBram Moolenaar norm! l 6525202929dSBram Moolenaar redraw! 6535202929dSBram Moolenaar let lines = s:screen_lines(1, 20) 6545202929dSBram Moolenaar call s:compare_lines(expect, lines) 6551aa76b8fSBram Moolenaar 6561aa76b8fSBram Moolenaar setl breakindent briopt=min:18 sbr=> 6571aa76b8fSBram Moolenaar norm! 5gj 6581aa76b8fSBram Moolenaar let lines = s:screen_lines(1, 20) 6591aa76b8fSBram Moolenaar let expect = [ 6601aa76b8fSBram Moolenaar \ ">aaaaaaaaaaaaaaaaaaa", 6611aa76b8fSBram Moolenaar \ ">aaaaaaaaaaaaaaaaaaa", 6621aa76b8fSBram Moolenaar \ ">aaaaaaaaaaaaaaaaaaa", 6631aa76b8fSBram Moolenaar \ ] 6641aa76b8fSBram Moolenaar call s:compare_lines(expect, lines) 665dfede9a7SBram Moolenaar call s:close_windows('set breakindent& briopt& sbr&') 666dfede9a7SBram Moolenaarendfunc 6670e05de46SBram Moolenaar 668e882f7a7SBram Moolenaarfunc Test_breakindent20_cpo_n_nextpage() 669e882f7a7SBram Moolenaar let s:input = "" 670e882f7a7SBram Moolenaar call s:test_windows('setl breakindent briopt=min:14 cpo+=n number') 671e882f7a7SBram Moolenaar call setline(1, repeat('a', 200)) 672e882f7a7SBram Moolenaar norm! 1gg 673e882f7a7SBram Moolenaar redraw! 674e882f7a7SBram Moolenaar let lines = s:screen_lines(1, 20) 675e882f7a7SBram Moolenaar let expect = [ 676e882f7a7SBram Moolenaar \ " 1 aaaaaaaaaaaaaaaa", 677e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaaaa", 678e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaaaa", 679e882f7a7SBram Moolenaar \ ] 680e882f7a7SBram Moolenaar call s:compare_lines(expect, lines) 681e882f7a7SBram Moolenaar " Scroll down one screen line 682e882f7a7SBram Moolenaar setl scrolloff=5 683e882f7a7SBram Moolenaar norm! 5gj 684e882f7a7SBram Moolenaar redraw! 685e882f7a7SBram Moolenaar let lines = s:screen_lines(1, 20) 686e882f7a7SBram Moolenaar let expect = [ 687e882f7a7SBram Moolenaar \ "--1 aaaaaaaaaaaaaaaa", 688e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaaaa", 689e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaaaa", 690e882f7a7SBram Moolenaar \ ] 691e882f7a7SBram Moolenaar call s:compare_lines(expect, lines) 692e882f7a7SBram Moolenaar 693e882f7a7SBram Moolenaar setl briopt+=shift:2 694e882f7a7SBram Moolenaar norm! 1gg 695e882f7a7SBram Moolenaar let lines = s:screen_lines(1, 20) 696e882f7a7SBram Moolenaar let expect = [ 697e882f7a7SBram Moolenaar \ " 1 aaaaaaaaaaaaaaaa", 698e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaa", 699e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaa", 700e882f7a7SBram Moolenaar \ ] 701e882f7a7SBram Moolenaar call s:compare_lines(expect, lines) 702e882f7a7SBram Moolenaar " Scroll down one screen line 703e882f7a7SBram Moolenaar norm! 5gj 704e882f7a7SBram Moolenaar let lines = s:screen_lines(1, 20) 705e882f7a7SBram Moolenaar let expect = [ 706e882f7a7SBram Moolenaar \ "--1 aaaaaaaaaaaaaa", 707e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaa", 708e882f7a7SBram Moolenaar \ " aaaaaaaaaaaaaa", 709e882f7a7SBram Moolenaar \ ] 710e882f7a7SBram Moolenaar call s:compare_lines(expect, lines) 711e882f7a7SBram Moolenaar 712e882f7a7SBram Moolenaar call s:close_windows('set breakindent& briopt& cpo& number&') 713e882f7a7SBram Moolenaarendfunc 714e882f7a7SBram Moolenaar 7154a0b85adSChristian Brabandtfunc Test_breakindent20_list() 7164a0b85adSChristian Brabandt call s:test_windows('setl breakindent breakindentopt= linebreak') 7174a0b85adSChristian Brabandt " default: 7184a0b85adSChristian Brabandt call setline(1, [' 1. Congress shall make no law', 7194a0b85adSChristian Brabandt \ ' 2.) Congress shall make no law', 7204a0b85adSChristian Brabandt \ ' 3.] Congress shall make no law']) 7214a0b85adSChristian Brabandt norm! 1gg 7224a0b85adSChristian Brabandt redraw! 7234a0b85adSChristian Brabandt let lines = s:screen_lines2(1, 6, 20) 7244a0b85adSChristian Brabandt let expect = [ 7254a0b85adSChristian Brabandt \ " 1. Congress ", 7264a0b85adSChristian Brabandt \ "shall make no law ", 7274a0b85adSChristian Brabandt \ " 2.) Congress ", 7284a0b85adSChristian Brabandt \ "shall make no law ", 7294a0b85adSChristian Brabandt \ " 3.] Congress ", 7304a0b85adSChristian Brabandt \ "shall make no law ", 7314a0b85adSChristian Brabandt \ ] 7324a0b85adSChristian Brabandt call s:compare_lines(expect, lines) 7334a0b85adSChristian Brabandt " set mininum indent 7344a0b85adSChristian Brabandt setl briopt=min:5 7354a0b85adSChristian Brabandt redraw! 7364a0b85adSChristian Brabandt let lines = s:screen_lines2(1, 6, 20) 7374a0b85adSChristian Brabandt let expect = [ 7384a0b85adSChristian Brabandt \ " 1. Congress ", 7394a0b85adSChristian Brabandt \ " shall make no law ", 7404a0b85adSChristian Brabandt \ " 2.) Congress ", 7414a0b85adSChristian Brabandt \ " shall make no law ", 7424a0b85adSChristian Brabandt \ " 3.] Congress ", 7434a0b85adSChristian Brabandt \ " shall make no law ", 7444a0b85adSChristian Brabandt \ ] 7454a0b85adSChristian Brabandt call s:compare_lines(expect, lines) 7464a0b85adSChristian Brabandt " set additional handing indent 7474a0b85adSChristian Brabandt setl briopt+=list:4 7484a0b85adSChristian Brabandt redraw! 7494a0b85adSChristian Brabandt let expect = [ 7504a0b85adSChristian Brabandt \ " 1. Congress ", 7514a0b85adSChristian Brabandt \ " shall make no ", 7524a0b85adSChristian Brabandt \ " law ", 7534a0b85adSChristian Brabandt \ " 2.) Congress ", 7544a0b85adSChristian Brabandt \ " shall make no ", 7554a0b85adSChristian Brabandt \ " law ", 7564a0b85adSChristian Brabandt \ " 3.] Congress ", 7574a0b85adSChristian Brabandt \ " shall make no ", 7584a0b85adSChristian Brabandt \ " law ", 7594a0b85adSChristian Brabandt \ ] 7604a0b85adSChristian Brabandt let lines = s:screen_lines2(1, 9, 20) 7614a0b85adSChristian Brabandt call s:compare_lines(expect, lines) 762f674b358SMaxim Kim 7634a0b85adSChristian Brabandt " reset linebreak option 7644a0b85adSChristian Brabandt " Note: it indents by one additional 7654a0b85adSChristian Brabandt " space, because of the leading space. 7664a0b85adSChristian Brabandt setl linebreak&vim list listchars=eol:$,space:_ 7674a0b85adSChristian Brabandt redraw! 7684a0b85adSChristian Brabandt let expect = [ 7694a0b85adSChristian Brabandt \ "__1.__Congress_shall", 7704a0b85adSChristian Brabandt \ " _make_no_law$ ", 7714a0b85adSChristian Brabandt \ "__2.)_Congress_shall", 7724a0b85adSChristian Brabandt \ " _make_no_law$ ", 7734a0b85adSChristian Brabandt \ "__3.]_Congress_shall", 7744a0b85adSChristian Brabandt \ " _make_no_law$ ", 7754a0b85adSChristian Brabandt \ ] 7764a0b85adSChristian Brabandt let lines = s:screen_lines2(1, 6, 20) 7774a0b85adSChristian Brabandt call s:compare_lines(expect, lines) 7784a0b85adSChristian Brabandt 779f674b358SMaxim Kim " check formatlistpat indent 780f674b358SMaxim Kim setl briopt=min:5,list:-1 781f674b358SMaxim Kim setl linebreak list&vim listchars&vim 782f674b358SMaxim Kim let &l:flp = '^\s*\d\+\.\?[\]:)}\t ]\s*' 783f674b358SMaxim Kim redraw! 784f674b358SMaxim Kim let expect = [ 785f674b358SMaxim Kim \ " 1. Congress ", 786f674b358SMaxim Kim \ " shall make no ", 787f674b358SMaxim Kim \ " law ", 788f674b358SMaxim Kim \ " 2.) Congress ", 789f674b358SMaxim Kim \ " shall make no ", 790f674b358SMaxim Kim \ " law ", 791f674b358SMaxim Kim \ " 3.] Congress ", 792f674b358SMaxim Kim \ " shall make no ", 793f674b358SMaxim Kim \ " law ", 794f674b358SMaxim Kim \ ] 795f674b358SMaxim Kim let lines = s:screen_lines2(1, 9, 20) 796f674b358SMaxim Kim call s:compare_lines(expect, lines) 797f674b358SMaxim Kim " check formatlistpat indent with different list levels 798f674b358SMaxim Kim let &l:flp = '^\s*\*\+\s\+' 799f674b358SMaxim Kim redraw! 800f674b358SMaxim Kim %delete _ 801f674b358SMaxim Kim call setline(1, ['* Congress shall make no law', 802f674b358SMaxim Kim \ '*** Congress shall make no law', 803f674b358SMaxim Kim \ '**** Congress shall make no law']) 804f674b358SMaxim Kim norm! 1gg 805f674b358SMaxim Kim let expect = [ 806f674b358SMaxim Kim \ "* Congress shall ", 807f674b358SMaxim Kim \ " make no law ", 808f674b358SMaxim Kim \ "*** Congress shall ", 809f674b358SMaxim Kim \ " make no law ", 810f674b358SMaxim Kim \ "**** Congress shall ", 811f674b358SMaxim Kim \ " make no law ", 812f674b358SMaxim Kim \ ] 813f674b358SMaxim Kim let lines = s:screen_lines2(1, 6, 20) 814f674b358SMaxim Kim call s:compare_lines(expect, lines) 815f674b358SMaxim Kim 816f674b358SMaxim Kim " check formatlistpat indent with different list level 817f674b358SMaxim Kim " showbreak and sbr 818f674b358SMaxim Kim setl briopt=min:5,sbr,list:-1,shift:2 819f674b358SMaxim Kim setl showbreak=> 820f674b358SMaxim Kim redraw! 821f674b358SMaxim Kim let expect = [ 822f674b358SMaxim Kim \ "* Congress shall ", 823f674b358SMaxim Kim \ "> make no law ", 824f674b358SMaxim Kim \ "*** Congress shall ", 825f674b358SMaxim Kim \ "> make no law ", 826f674b358SMaxim Kim \ "**** Congress shall ", 827f674b358SMaxim Kim \ "> make no law ", 828f674b358SMaxim Kim \ ] 829f674b358SMaxim Kim let lines = s:screen_lines2(1, 6, 20) 830f674b358SMaxim Kim call s:compare_lines(expect, lines) 831f674b358SMaxim Kim call s:close_windows('set breakindent& briopt& linebreak& list& listchars& showbreak&') 8324a0b85adSChristian Brabandtendfunc 8334a0b85adSChristian Brabandt 834*03d25799SYegappan Lakshmanan" The following used to crash Vim. This is fixed by 8.2.3391. 835*03d25799SYegappan Lakshmanan" This is a regression introduced by 8.2.2903. 836*03d25799SYegappan Lakshmananfunc Test_window_resize_with_linebreak() 837*03d25799SYegappan Lakshmanan new 838*03d25799SYegappan Lakshmanan 53vnew 839*03d25799SYegappan Lakshmanan set linebreak 840*03d25799SYegappan Lakshmanan set showbreak=>> 841*03d25799SYegappan Lakshmanan set breakindent 842*03d25799SYegappan Lakshmanan set breakindentopt=shift:4 843*03d25799SYegappan Lakshmanan call setline(1, "\naaaaaaaaa\n\na\naaaaa\n¯aaaaaaaaaa\naaaaaaaaaaaa\naaa\n\"a:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - aaaaaaaa\"\naaaaaaaa\n\"a") 844*03d25799SYegappan Lakshmanan redraw! 845*03d25799SYegappan Lakshmanan call assert_equal([" >>aa^@\"a: "], ScreenLines(2, 14)) 846*03d25799SYegappan Lakshmanan vertical resize 52 847*03d25799SYegappan Lakshmanan redraw! 848*03d25799SYegappan Lakshmanan call assert_equal([" >>aaa^@\"a:"], ScreenLines(2, 14)) 849*03d25799SYegappan Lakshmanan %bw! 850*03d25799SYegappan Lakshmananendfunc 851*03d25799SYegappan Lakshmanan 8520e05de46SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 853