1544d3bc9SBram Moolenaar" Test for linebreak and list option (non-utf8) 2544d3bc9SBram Moolenaar 3544d3bc9SBram Moolenaarset encoding=latin1 4544d3bc9SBram Moolenaarscriptencoding latin1 5544d3bc9SBram Moolenaar 6b46fecd3SBram Moolenaarsource check.vim 7b46fecd3SBram MoolenaarCheckOption linebreak 8b46fecd3SBram MoolenaarCheckFeature conceal 9544d3bc9SBram Moolenaar 10544d3bc9SBram Moolenaarsource view_util.vim 11544d3bc9SBram Moolenaar 12544d3bc9SBram Moolenaarfunction s:screen_lines(lnum, width) abort 13544d3bc9SBram Moolenaar return ScreenLines(a:lnum, a:width) 14544d3bc9SBram Moolenaarendfunction 15544d3bc9SBram Moolenaar 161e115360SBram Moolenaarfunc s:compare_lines(expect, actual) 17544d3bc9SBram Moolenaar call assert_equal(join(a:expect, "\n"), join(a:actual, "\n")) 181e115360SBram Moolenaarendfunc 19544d3bc9SBram Moolenaar 20544d3bc9SBram Moolenaarfunction s:test_windows(...) 21544d3bc9SBram Moolenaar call NewWindow(10, 20) 22544d3bc9SBram Moolenaar setl ts=8 sw=4 sts=4 linebreak sbr= wrap 23544d3bc9SBram Moolenaar exe get(a:000, 0, '') 24544d3bc9SBram Moolenaarendfunction 25544d3bc9SBram Moolenaar 26544d3bc9SBram Moolenaarfunction s:close_windows(...) 27544d3bc9SBram Moolenaar call CloseWindow() 28544d3bc9SBram Moolenaar exe get(a:000, 0, '') 29544d3bc9SBram Moolenaarendfunction 30544d3bc9SBram Moolenaar 31544d3bc9SBram Moolenaarfunc Test_set_linebreak() 32544d3bc9SBram Moolenaar call s:test_windows('setl ts=4 sbr=+') 33544d3bc9SBram Moolenaar call setline(1, "\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP ") 34544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 4], winwidth(0)) 35544d3bc9SBram Moolenaar let expect = [ 36544d3bc9SBram Moolenaar\ " abcdef ", 37544d3bc9SBram Moolenaar\ "+hijklmn ", 38544d3bc9SBram Moolenaar\ "+pqrstuvwxyz_1060ABC", 39544d3bc9SBram Moolenaar\ "+DEFGHIJKLMNOP ", 40544d3bc9SBram Moolenaar\ ] 41544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 42544d3bc9SBram Moolenaar call s:close_windows() 43544d3bc9SBram Moolenaarendfunc 44544d3bc9SBram Moolenaar 45544d3bc9SBram Moolenaarfunc Test_linebreak_with_list() 46*eed9d462SBram Moolenaar set listchars= 47544d3bc9SBram Moolenaar call s:test_windows('setl ts=4 sbr=+ list listchars=') 48544d3bc9SBram Moolenaar call setline(1, "\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP ") 49544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 4], winwidth(0)) 50544d3bc9SBram Moolenaar let expect = [ 51544d3bc9SBram Moolenaar\ "^Iabcdef hijklmn^I ", 52544d3bc9SBram Moolenaar\ "+pqrstuvwxyz_1060ABC", 53544d3bc9SBram Moolenaar\ "+DEFGHIJKLMNOP ", 54544d3bc9SBram Moolenaar\ "~ ", 55544d3bc9SBram Moolenaar\ ] 56544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 57544d3bc9SBram Moolenaar call s:close_windows() 58*eed9d462SBram Moolenaar set listchars&vim 59544d3bc9SBram Moolenaarendfunc 60544d3bc9SBram Moolenaar 61544d3bc9SBram Moolenaarfunc Test_linebreak_with_nolist() 62544d3bc9SBram Moolenaar call s:test_windows('setl ts=4 sbr=+ nolist') 63544d3bc9SBram Moolenaar call setline(1, "\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP ") 64544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 4], winwidth(0)) 65544d3bc9SBram Moolenaar let expect = [ 66544d3bc9SBram Moolenaar\ " abcdef ", 67544d3bc9SBram Moolenaar\ "+hijklmn ", 68544d3bc9SBram Moolenaar\ "+pqrstuvwxyz_1060ABC", 69544d3bc9SBram Moolenaar\ "+DEFGHIJKLMNOP ", 70544d3bc9SBram Moolenaar\ ] 71544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 72544d3bc9SBram Moolenaar call s:close_windows() 73544d3bc9SBram Moolenaarendfunc 74544d3bc9SBram Moolenaar 75544d3bc9SBram Moolenaarfunc Test_should_break() 76544d3bc9SBram Moolenaar call s:test_windows('setl sbr=+ nolist') 77544d3bc9SBram Moolenaar call setline(1, "1\t" . repeat('a', winwidth(0)-2)) 78544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 4], winwidth(0)) 79544d3bc9SBram Moolenaar let expect = [ 80544d3bc9SBram Moolenaar\ "1 ", 81544d3bc9SBram Moolenaar\ "+aaaaaaaaaaaaaaaaaa ", 82544d3bc9SBram Moolenaar\ "~ ", 83544d3bc9SBram Moolenaar\ "~ ", 84544d3bc9SBram Moolenaar\ ] 85544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 86544d3bc9SBram Moolenaar call s:close_windows() 87544d3bc9SBram Moolenaarendfunc 88544d3bc9SBram Moolenaar 89544d3bc9SBram Moolenaarfunc Test_linebreak_with_conceal() 90544d3bc9SBram Moolenaar call s:test_windows('setl cpo&vim sbr=+ list conceallevel=2 concealcursor=nv listchars=tab:ab') 91544d3bc9SBram Moolenaar call setline(1, "_S_\t bla") 92544d3bc9SBram Moolenaar syn match ConcealVar contained /_/ conceal 93544d3bc9SBram Moolenaar syn match All /.*/ contains=ConcealVar 94544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 4], winwidth(0)) 95544d3bc9SBram Moolenaar let expect = [ 96544d3bc9SBram Moolenaar\ "Sabbbbbb bla ", 97544d3bc9SBram Moolenaar\ "~ ", 98544d3bc9SBram Moolenaar\ "~ ", 99544d3bc9SBram Moolenaar\ "~ ", 100544d3bc9SBram Moolenaar\ ] 101544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 102544d3bc9SBram Moolenaar call s:close_windows() 103544d3bc9SBram Moolenaarendfunc 104544d3bc9SBram Moolenaar 10503c3bd9fSBram Moolenaarfunc Test_linebreak_with_visual_operations() 10603c3bd9fSBram Moolenaar call s:test_windows() 10703c3bd9fSBram Moolenaar let line = '1234567890 2234567890 3234567890' 10803c3bd9fSBram Moolenaar call setline(1, line) 10903c3bd9fSBram Moolenaar 11003c3bd9fSBram Moolenaar " yank 11103c3bd9fSBram Moolenaar exec "norm! ^w\<C-V>ey" 11203c3bd9fSBram Moolenaar call assert_equal('2234567890', @@) 11303c3bd9fSBram Moolenaar exec "norm! w\<C-V>ey" 11403c3bd9fSBram Moolenaar call assert_equal('3234567890', @@) 11503c3bd9fSBram Moolenaar 11603c3bd9fSBram Moolenaar " increment / decrement 11703c3bd9fSBram Moolenaar exec "norm! ^w\<C-V>\<C-A>w\<C-V>\<C-X>" 11803c3bd9fSBram Moolenaar call assert_equal('1234567890 3234567890 2234567890', getline(1)) 11903c3bd9fSBram Moolenaar 12003c3bd9fSBram Moolenaar " replace 12103c3bd9fSBram Moolenaar exec "norm! ^w\<C-V>3lraw\<C-V>3lrb" 12203c3bd9fSBram Moolenaar call assert_equal('1234567890 aaaa567890 bbbb567890', getline(1)) 12303c3bd9fSBram Moolenaar 12403c3bd9fSBram Moolenaar " tilde 12503c3bd9fSBram Moolenaar exec "norm! ^w\<C-V>2l~w\<C-V>2l~" 12603c3bd9fSBram Moolenaar call assert_equal('1234567890 AAAa567890 BBBb567890', getline(1)) 12703c3bd9fSBram Moolenaar 12803c3bd9fSBram Moolenaar " delete and insert 12903c3bd9fSBram Moolenaar exec "norm! ^w\<C-V>3lc2345\<Esc>w\<C-V>3lc3456\<Esc>" 13003c3bd9fSBram Moolenaar call assert_equal('1234567890 2345567890 3456567890', getline(1)) 13103c3bd9fSBram Moolenaar call assert_equal('BBBb', @@) 13203c3bd9fSBram Moolenaar 13303c3bd9fSBram Moolenaar call s:close_windows() 13403c3bd9fSBram Moolenaarendfunc 13503c3bd9fSBram Moolenaar 136544d3bc9SBram Moolenaarfunc Test_virtual_block() 137544d3bc9SBram Moolenaar call s:test_windows('setl sbr=+') 138544d3bc9SBram Moolenaar call setline(1, [ 139544d3bc9SBram Moolenaar\ "REMOVE: this not", 140544d3bc9SBram Moolenaar\ "REMOVE: aaaaaaaaaaaaa", 141544d3bc9SBram Moolenaar\ ]) 142544d3bc9SBram Moolenaar exe "norm! 1/^REMOVE:" 143544d3bc9SBram Moolenaar exe "norm! 0\<C-V>jf x" 144544d3bc9SBram Moolenaar $put 145544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 4], winwidth(0)) 146544d3bc9SBram Moolenaar let expect = [ 147544d3bc9SBram Moolenaar\ "this not ", 148544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaa ", 149544d3bc9SBram Moolenaar\ "REMOVE: ", 150544d3bc9SBram Moolenaar\ "REMOVE: ", 151544d3bc9SBram Moolenaar\ ] 152544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 153544d3bc9SBram Moolenaar call s:close_windows() 154544d3bc9SBram Moolenaarendfunc 155544d3bc9SBram Moolenaar 156544d3bc9SBram Moolenaarfunc Test_virtual_block_and_vbA() 157544d3bc9SBram Moolenaar call s:test_windows() 158544d3bc9SBram Moolenaar call setline(1, "long line: " . repeat("foobar ", 40) . "TARGET at end") 159544d3bc9SBram Moolenaar exe "norm! $3B\<C-v>eAx\<Esc>" 160544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 10], winwidth(0)) 161544d3bc9SBram Moolenaar let expect = [ 162544d3bc9SBram Moolenaar\ "foobar foobar ", 163544d3bc9SBram Moolenaar\ "foobar foobar ", 164544d3bc9SBram Moolenaar\ "foobar foobar ", 165544d3bc9SBram Moolenaar\ "foobar foobar ", 166544d3bc9SBram Moolenaar\ "foobar foobar ", 167544d3bc9SBram Moolenaar\ "foobar foobar ", 168544d3bc9SBram Moolenaar\ "foobar foobar ", 169544d3bc9SBram Moolenaar\ "foobar foobar ", 170544d3bc9SBram Moolenaar\ "foobar foobar ", 171544d3bc9SBram Moolenaar\ "foobar TARGETx at ", 172544d3bc9SBram Moolenaar\ ] 173544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 174544d3bc9SBram Moolenaar call s:close_windows() 175544d3bc9SBram Moolenaarendfunc 176544d3bc9SBram Moolenaar 177544d3bc9SBram Moolenaarfunc Test_virtual_char_and_block() 178544d3bc9SBram Moolenaar call s:test_windows() 179544d3bc9SBram Moolenaar call setline(1, "1111-1111-1111-11-1111-1111-1111") 180544d3bc9SBram Moolenaar exe "norm! 0f-lv3lc2222\<Esc>bgj." 181544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 2], winwidth(0)) 182544d3bc9SBram Moolenaar let expect = [ 183544d3bc9SBram Moolenaar\ "1111-2222-1111-11- ", 184544d3bc9SBram Moolenaar\ "1111-2222-1111 ", 185544d3bc9SBram Moolenaar\ ] 186544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 187544d3bc9SBram Moolenaar call s:close_windows() 188544d3bc9SBram Moolenaarendfunc 189544d3bc9SBram Moolenaar 190544d3bc9SBram Moolenaarfunc Test_undo_after_block_visual() 191544d3bc9SBram Moolenaar call s:test_windows() 192544d3bc9SBram Moolenaar call setline(1, ["aaa", "aaa", "a"]) 193544d3bc9SBram Moolenaar exe "norm! gg\<C-V>2j~e." 194544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 3], winwidth(0)) 195544d3bc9SBram Moolenaar let expect = [ 196544d3bc9SBram Moolenaar\ "AaA ", 197544d3bc9SBram Moolenaar\ "AaA ", 198544d3bc9SBram Moolenaar\ "A ", 199544d3bc9SBram Moolenaar\ ] 200544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 201544d3bc9SBram Moolenaar call s:close_windows() 202544d3bc9SBram Moolenaarendfunc 203544d3bc9SBram Moolenaar 204544d3bc9SBram Moolenaarfunc Test_norm_after_block_visual() 205544d3bc9SBram Moolenaar call s:test_windows() 206544d3bc9SBram Moolenaar call setline(1, ["abcd{ef", "ghijklm", "no}pgrs"]) 207544d3bc9SBram Moolenaar exe "norm! ggf{\<C-V>\<C-V>c%" 208544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 3], winwidth(0)) 209544d3bc9SBram Moolenaar let expect = [ 210544d3bc9SBram Moolenaar\ "abcdpgrs ", 211544d3bc9SBram Moolenaar\ "~ ", 212544d3bc9SBram Moolenaar\ "~ ", 213544d3bc9SBram Moolenaar\ ] 214544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 215544d3bc9SBram Moolenaar call s:close_windows() 216544d3bc9SBram Moolenaarendfunc 217544d3bc9SBram Moolenaar 218544d3bc9SBram Moolenaarfunc Test_block_replace_after_wrapping() 219544d3bc9SBram Moolenaar call s:test_windows() 220544d3bc9SBram Moolenaar call setline(1, repeat("a", 150)) 221544d3bc9SBram Moolenaar exe "norm! 0yypk147|\<C-V>jr0" 222544d3bc9SBram Moolenaar call assert_equal(repeat("a", 146) . "0aaa", getline(1)) 223544d3bc9SBram Moolenaar call assert_equal(repeat("a", 146) . "0aaa", getline(2)) 224544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 10], winwidth(0)) 225544d3bc9SBram Moolenaar let expect = [ 226544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 227544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 228544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 229544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 230544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 231544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 232544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 233544d3bc9SBram Moolenaar\ "aaaaaa0aaa ", 234544d3bc9SBram Moolenaar\ "@ ", 235544d3bc9SBram Moolenaar\ "@ ", 236544d3bc9SBram Moolenaar\ ] 237544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 238544d3bc9SBram Moolenaar call s:close_windows() 239544d3bc9SBram Moolenaarendfunc 240544d3bc9SBram Moolenaar 241544d3bc9SBram Moolenaarfunc Test_list_with_listchars() 242544d3bc9SBram Moolenaar call s:test_windows('setl list listchars=space:_,trail:-,tab:>-,eol:$') 243544d3bc9SBram Moolenaar call setline(1, "a aaaaaaaaaaaaaaaaaaaaaa\ta ") 244544d3bc9SBram Moolenaar let lines = s:screen_lines([1, 3], winwidth(0)) 245544d3bc9SBram Moolenaar let expect = [ 246544d3bc9SBram Moolenaar\ "a_ ", 247544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa", 248544d3bc9SBram Moolenaar\ "aa>-----a-$ ", 249544d3bc9SBram Moolenaar\ ] 250544d3bc9SBram Moolenaar call s:compare_lines(expect, lines) 251544d3bc9SBram Moolenaar call s:close_windows() 252544d3bc9SBram Moolenaarendfunc 253abc39ab6SBram Moolenaar 254abc39ab6SBram Moolenaarfunc Test_list_with_tab_and_skipping_first_chars() 255abc39ab6SBram Moolenaar call s:test_windows('setl list listchars=tab:>- ts=70 nowrap') 256abc39ab6SBram Moolenaar call setline(1, ["iiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa"]) 257abc39ab6SBram Moolenaar call cursor(4,64) 258abc39ab6SBram Moolenaar norm! 2zl 259abc39ab6SBram Moolenaar let lines = s:screen_lines([1, 4], winwidth(0)) 260abc39ab6SBram Moolenaar let expect = [ 261abc39ab6SBram Moolenaar\ "---------------aaaaa", 262abc39ab6SBram Moolenaar\ "---------------aaaaa", 263abc39ab6SBram Moolenaar\ "---------------aaaaa", 264abc39ab6SBram Moolenaar\ "iiiiiiiii>-----aaaaa", 265abc39ab6SBram Moolenaar\ ] 266abc39ab6SBram Moolenaar call s:compare_lines(expect, lines) 267abc39ab6SBram Moolenaar call s:close_windows() 2686d91bcb4SBram Moolenaarendfunc 2696d91bcb4SBram Moolenaar 2706d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 271