123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727 |
- source check.vim
- source view_util.vim
- source screendump.vim
- func Check_listchars(expected, end_lnum, end_scol = -1, leftcol = 0)
- if a:leftcol > 0
- let save_wrap = &wrap
- set nowrap
- call cursor(1, 1)
- exe 'normal! ' .. a:leftcol .. 'zl'
- endif
- redraw!
- for i in range(1, a:end_lnum)
- if a:leftcol > 0
- let col = virtcol2col(0, i, a:leftcol)
- let col += getline(i)->strpart(col - 1, 1, v:true)->len()
- call cursor(i, col)
- redraw
- call assert_equal(a:leftcol, winsaveview().leftcol)
- else
- call cursor(i, 1)
- end
- let end_scol = a:end_scol < 0 ? '$'->virtcol() - a:leftcol : a:end_scol
- call assert_equal([a:expected[i - 1]->strcharpart(a:leftcol)],
- \ ScreenLines(i, end_scol))
- endfor
- if a:leftcol > 0
- let &wrap = save_wrap
- endif
- endfunc
- func Test_listchars()
- enew!
- set ff=unix
- set list
- set listchars+=tab:>-,space:.,trail:<
- call append(0, [
- \ ' aa ',
- \ ' bb ',
- \ ' cccc ',
- \ 'dd ee ',
- \ ' '
- \ ])
- let expected = [
- \ '>-------aa>-----$',
- \ '..bb>---<<$',
- \ '...cccc><$',
- \ 'dd........ee<<>-$',
- \ '<$'
- \ ]
- call Check_listchars(expected, 5)
- call Check_listchars(expected, 4, -1, 5)
- set listchars-=trail:<
- let expected = [
- \ '>-------aa>-----$',
- \ '..bb>---..$',
- \ '...cccc>.$',
- \ 'dd........ee..>-$',
- \ '.$'
- \ ]
- call Check_listchars(expected, 5)
- call Check_listchars(expected, 4, -1, 5)
-
- set listchars-=tab:>-
- set listchars+=tab:<=>,trail:-
- let expected = [
- \ '<======>aa<====>$',
- \ '..bb<==>--$',
- \ '...cccc>-$',
- \ 'dd........ee--<>$',
- \ '-$'
- \ ]
- call Check_listchars(expected, 5)
- call Check_listchars(expected, 4, -1, 5)
-
- set listchars-=tab:<=>
- set listchars+=tab:<·>
- set linebreak
- let expected = [
- \ '<······>aa<····>$',
- \ '..bb<··>--$',
- \ '...cccc>-$',
- \ 'dd........ee--<>$',
- \ '-$'
- \ ]
- call Check_listchars(expected, 5)
- set nolinebreak
- set listchars-=tab:<·>
- set listchars+=tab:<=>
- set listchars-=trail:-
- let expected = [
- \ '<======>aa<====>$',
- \ '..bb<==>..$',
- \ '...cccc>.$',
- \ 'dd........ee..<>$',
- \ '.$'
- \ ]
- call Check_listchars(expected, 5)
- call Check_listchars(expected, 4, -1, 5)
- set listchars-=tab:<=>
- set listchars+=tab:>-
- set listchars+=trail:<
- set nolist
- normal ggdG
- call append(0, [
- \ ' fff ',
- \ ' gg ',
- \ ' h ',
- \ 'iii ',
- \ ])
- let l = split(execute("%list"), "\n")
- call assert_equal([
- \ '..fff>--<<$',
- \ '>-------gg>-----$',
- \ '.....h>-$',
- \ 'iii<<<<><<$',
- \ '$'], l)
-
- normal ggdG
- set listchars=eol:$
- set listchars+=lead:>,trail:<,space:x
- set list
- call append(0, [
- \ ' ffff ',
- \ ' gg',
- \ 'h ',
- \ ' ',
- \ ' 0 0 ',
- \ ])
- let expected = [
- \ '>>>>ffff<<<<$',
- \ '>>>>>>>>>>gg$',
- \ 'h<<<<<<<<<<<$',
- \ '<<<<<<<<<<<<$',
- \ '>>>>0xx0<<<<$',
- \ '$'
- \ ]
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- normal ggdG
- set listchars=eol:$
- set listchars+=multispace:yYzZ
- set list
- call append(0, [
- \ ' ffff ',
- \ ' i i gg',
- \ ' h ',
- \ ' j ',
- \ ' 0 0 ',
- \ ])
- let expected = [
- \ 'yYzZffffyYzZ$',
- \ 'yYi iyYzZygg$',
- \ ' hyYzZyYzZyY$',
- \ 'yYzZyYzZyYj $',
- \ 'yYzZ0yY0yYzZ$',
- \ '$'
- \ ]
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- normal ggdG
- set listchars=eol:$,multispace:yYzZ,nbsp:S
- set listchars+=leadmultispace:.-+*
- set list
- call append(0, [
- \ ' ffff ',
- \ ' i i gg',
- \ ' h ',
- \ ' j ',
- \ ' 0 0 ',
- \ ])
- let expected = [
- \ '.-+*ffffyYzZ$',
- \ '.-i iSyYzZgg$',
- \ ' hyYzZyYzZyY$',
- \ '.-+*.-+*.-j $',
- \ '.-+*0yY0yYzZ$',
- \ '$'
- \ ]
- call assert_equal('eol:$,multispace:yYzZ,nbsp:S,leadmultispace:.-+*', &listchars)
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 1)
- call Check_listchars(expected, 5, -1, 2)
- call Check_listchars(expected, 5, -1, 3)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- normal ggdG
- set listchars-=multispace:yYzZ
- set listchars+=space:+,trail:>,eol:$
- set list
- call append(0, [
- \ ' ffff ',
- \ ' i i gg',
- \ ' h ',
- \ ' j ',
- \ ' 0 0 ',
- \ ])
- let expected = [
- \ '.-+*ffff>>>>$',
- \ '.-i+i+++++gg$',
- \ '+h>>>>>>>>>>$',
- \ '.-+*.-+*.-j>$',
- \ '.-+*0++0>>>>$',
- \ '$'
- \ ]
- call assert_equal('eol:$,nbsp:S,leadmultispace:.-+*,space:+,trail:>,eol:$', &listchars)
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 1)
- call Check_listchars(expected, 5, -1, 2)
- call Check_listchars(expected, 5, -1, 3)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- normal ggdG
- set listchars=eol:$
- set listchars=leadmultispace:.-+*
- set list
- call append(0, [
- \ ' ffff ',
- \ ' i i gg',
- \ ' h ',
- \ ' j ',
- \ ' 0 0 ',
- \ ])
- let expected = [
- \ '.-+*ffff ',
- \ '.-i i gg',
- \ ' h ',
- \ '.-+*.-+*.-j ',
- \ '.-+*0 0 ',
- \ ' '
- \ ]
- call assert_equal('leadmultispace:.-+*', &listchars)
- call Check_listchars(expected, 5, 12)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- " "leadmultispace
- set ambiwidth=double
- set ambiwidth&
-
- normal ggdG
- set listchars=eol:$
- set listchars+=lead:<,space:-
- set listchars+=leadmultispace:.-+*
- set list
- call append(0, [
- \ ' ffff ',
- \ ' i i gg',
- \ ' h ',
- \ ' j ',
- \ ' 0 0 ',
- \ ])
- let expected = [
- \ '.-+*ffff----$',
- \ '.-i-i-----gg$',
- \ '<h----------$',
- \ '.-+*.-+*.-j-$',
- \ '.-+*0--0----$',
- \ '$'
- \ ]
- call assert_equal('eol:$,lead:<,space:-,leadmultispace:.-+*', &listchars)
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 1)
- call Check_listchars(expected, 5, -1, 2)
- call Check_listchars(expected, 5, -1, 3)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- set listchars=eol:$
- set listchars+=multispace:yYzZ
- set listchars+=space:x,multispace:XyY
- let expected = [
- \ 'XyYXffffXyYX$',
- \ 'XyixiXyYXygg$',
- \ 'xhXyYXyYXyYX$',
- \ 'XyYXyYXyYXjx$',
- \ 'XyYX0Xy0XyYX$',
- \ '$'
- \ ]
- call assert_equal('eol:$,multispace:yYzZ,space:x,multispace:XyY', &listchars)
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
- set listchars+=lead:>,trail:<
- let expected = [
- \ '>>>>ffff<<<<$',
- \ '>>ixiXyYXygg$',
- \ '>h<<<<<<<<<<$',
- \ '>>>>>>>>>>j<$',
- \ '>>>>0Xy0<<<<$',
- \ '$'
- \ ]
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- set listchars-=multispace:XyY
- set listchars-=multispace:yYzZ
- let expected = [
- \ '>>>>ffff<<<<$',
- \ '>>ixixxxxxgg$',
- \ '>h<<<<<<<<<<$',
- \ '>>>>>>>>>>j<$',
- \ '>>>>0xx0<<<<$',
- \ '$'
- \ ]
- call Check_listchars(expected, 6)
- call Check_listchars(expected, 5, -1, 6)
- call assert_equal(expected, split(execute("%list"), "\n"))
-
- normal ggdG
- set listchars=nbsp:X,trail:Y
- set list
-
- let nbsp = nr2char(0xa0)
- call append(0, [ ">" .. nbsp .. "<" ])
- let expected = '>X< '
- call Check_listchars([expected], 1)
- set listchars=nbsp:X
- call Check_listchars([expected], 1)
-
- normal ggdG
- set listchars=extends:Z
- set nowrap
- set nolist
- call append(0, [ repeat('A', &columns + 1) ])
- let expected = repeat('A', &columns)
- call Check_listchars([expected], 1, &columns)
- set list
- let expected = expected[:-2] . 'Z'
- call Check_listchars([expected], 1, &columns)
- enew!
- set listchars& ff&
- endfunc
- func Test_listchars_unicode()
- enew!
- let oldencoding=&encoding
- set encoding=utf-8
- set ff=unix
- set listchars=eol:⇔,space:␣,multispace:≡≢≣,nbsp:≠,tab:←↔→
- set list
- let nbsp = nr2char(0xa0)
- call append(0, [" a\tb c" .. nbsp .. "d "])
- let expected = ['≡≢≣≡≢≣≡≢a←↔↔↔↔↔→b␣c≠d≡≢⇔']
- call Check_listchars(expected, 1)
- call Check_listchars(expected, 1, -1, 3)
- call Check_listchars(expected, 1, -1, 13)
- set listchars=eol:\\u21d4,space:\\u2423,multispace:≡\\u2262\\U00002263,nbsp:\\U00002260,tab:←↔\\u2192
- call Check_listchars(expected, 1)
- call Check_listchars(expected, 1, -1, 3)
- call Check_listchars(expected, 1, -1, 13)
- set listchars+=lead:⇨,trail:⇦
- let expected = ['⇨⇨⇨⇨⇨⇨⇨⇨a←↔↔↔↔↔→b␣c≠d⇦⇦⇔']
- call Check_listchars(expected, 1)
- call Check_listchars(expected, 1, -1, 3)
- call Check_listchars(expected, 1, -1, 13)
- let &encoding=oldencoding
- enew!
- set listchars& ff&
- endfunction
- func Test_listchars_invalid()
- enew!
- set ff=unix
- set listchars=eol:$
- set list
- set ambiwidth=double
-
- call assert_fails('set listchars=x', 'E474:')
- call assert_fails('set listchars=x', 'E474:')
- call assert_fails('set listchars=multispace', 'E474:')
- call assert_fails('set listchars=leadmultispace', 'E474:')
-
- call assert_fails('set listchars=space:', 'E1511:')
- call assert_fails('set listchars=tab:x', 'E1511:')
- call assert_fails('set listchars=multispace:', 'E1511:')
- call assert_fails('set listchars=leadmultispace:', 'E1511:')
-
- call assert_fails('set listchars=space:x,space:', 'E1511:')
- call assert_fails('set listchars=space:,space:x', 'E1511:')
- call assert_fails('set listchars=tab:xx,tab:x', 'E1511:')
- call assert_fails('set listchars=tab:x,tab:xx', 'E1511:')
- call assert_fails('set listchars=multispace:,multispace:x', 'E1511:')
- call assert_fails('set listchars=multispace:x,multispace:', 'E1511:')
- call assert_fails('set listchars=leadmultispace:,leadmultispace:x', 'E1511:')
- call assert_fails('set listchars=leadmultispace:x,leadmultispace:', 'E1511:')
-
- call assert_fails('set listchars=space:xx', 'E1511:')
- call assert_fails('set listchars=tab:xxxx', 'E1511:')
-
- call assert_fails('set listchars=space:·', 'E1512:')
- call assert_fails('set listchars=tab:·x', 'E1512:')
- call assert_fails('set listchars=tab:x·', 'E1512:')
- call assert_fails('set listchars=tab:xx·', 'E1512:')
- call assert_fails('set listchars=multispace:·', 'E1512:')
- call assert_fails('set listchars=multispace:xxx·', 'E1512:')
- call assert_fails('set listchars=leadmultispace:·', 'E1512:')
- call assert_fails('set listchars=leadmultispace:xxx·', 'E1512:')
-
- call assert_fails("set listchars=space:\x01", 'E1512:')
- call assert_fails("set listchars=tab:\x01x", 'E1512:')
- call assert_fails("set listchars=tab:x\x01", 'E1512:')
- call assert_fails("set listchars=tab:xx\x01", 'E1512:')
- call assert_fails("set listchars=multispace:\x01", 'E1512:')
- call assert_fails("set listchars=multispace:xxx\x01", 'E1512:')
- call assert_fails('set listchars=space:\\x01', 'E1512:')
- call assert_fails('set listchars=tab:\\x01x', 'E1512:')
- call assert_fails('set listchars=tab:x\\x01', 'E1512:')
- call assert_fails('set listchars=tab:xx\\x01', 'E1512:')
- call assert_fails('set listchars=multispace:\\x01', 'E1512:')
- call assert_fails('set listchars=multispace:xxx\\x01', 'E1512:')
- call assert_fails("set listchars=leadmultispace:\x01", 'E1512:')
- call assert_fails('set listchars=leadmultispace:\\x01', 'E1512:')
- call assert_fails("set listchars=leadmultispace:xxx\x01", 'E1512:')
- call assert_fails('set listchars=leadmultispace:xxx\\x01', 'E1512:')
- enew!
- set ambiwidth& listchars& ff&
- endfunction
- func Test_listchars_composing()
- enew!
- let oldencoding=&encoding
- set encoding=utf-8
- set ff=unix
- set list
- set listchars=eol:$,space:_,nbsp:=
- let nbsp1 = nr2char(0xa0)
- let nbsp2 = nr2char(0x202f)
- call append(0, [
- \ " \u3099\t \u309A" .. nbsp1 .. nbsp1 .. "\u0302" .. nbsp2 .. nbsp2 .. "\u0302",
- \ ])
- let expected = [
- \ "_ \u3099^I \u309A=" .. nbsp1 .. "\u0302=" .. nbsp2 .. "\u0302$"
- \ ]
- call Check_listchars(expected, 1)
- let &encoding=oldencoding
- enew!
- set listchars& ff&
- endfunction
- func s:CheckListCharsValue(expected)
- call assert_equal(a:expected, &listchars)
- call assert_equal(a:expected, getwinvar(0, '&listchars'))
- endfunc
- func Test_listchars_window_local()
- %bw!
- set list listchars&
- let nvim_default = &listchars
- new
-
- setlocal listchars=tab:+-,eol:#
- call s:CheckListCharsValue('tab:+-,eol:#')
-
- setlocal listchars=
- call s:CheckListCharsValue(nvim_default)
-
- setlocal listchars=space:.,extends:>
- setlocal listchars<
- call s:CheckListCharsValue(nvim_default)
-
- setlocal listchars=space:.,extends:>
- set listchars<
- call s:CheckListCharsValue(nvim_default)
-
- setlocal listchars=space:.,extends:>
- setglobal listchars=tab:+-,eol:#
- call s:CheckListCharsValue('space:.,extends:>')
-
- split
- call s:CheckListCharsValue('space:.,extends:>')
-
- set listchars&
- call s:CheckListCharsValue(nvim_default)
- close
- call s:CheckListCharsValue('space:.,extends:>')
-
- call setline(1, ["\t one two "])
- setlocal listchars=tab:<->,lead:_,space:.,trail:@,eol:#
- split
- setlocal listchars=tab:[.],lead:#,space:_,trail:.,eol:&
- split
- set listchars=tab:+-+,lead:^,space:>,trail:<,eol:%
- call assert_equal(['+------+^^one>>two<<%'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['[......]##one__two..&'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
-
- setglobal listchars=tab:[.],lead:#,space:_,trail:.,eol:&
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
- set listchars<
- call assert_equal(['[......]##one__two..&'], ScreenLines(1, virtcol('$')))
-
-
- enew! | only
- call setline(1, ["\t one two "])
- set listchars=tab:[.],lead:#,space:_,trail:.,eol:&
- split
- setlocal listchars=tab:+-+,lead:^,space:>,trail:<,eol:%
- split
- setlocal listchars=tab:<->,lead:_,space:.,trail:@,eol:#
- setglobal listchars=tab:{.},lead:-,space:=,trail:#,eol:$
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['+------+^^one>>two<<%'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['{......}--one==two##$'], ScreenLines(1, virtcol('$')))
-
-
- split
- setlocal listchars=tab:<->,lead:_,space:.,trail:@,eol:#
- setglobal listchars=eol:$
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['^I one two $'], ScreenLines(1, virtcol('$')))
-
-
- set listchars=tab:{.},lead:-,space:=,trail:#,eol:$
- split
- setlocal listchars=tab:<->,lead:_,space:.,trail:@,eol:#
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
- setlocal listchars=eol:$
- call assert_equal(['^I one two $'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['{......}--one==two##$'], ScreenLines(1, virtcol('$')))
-
-
- split
- setlocal listchars=tab:<->,lead:_,space:.,trail:@,eol:#
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
- set listchars=tab:+-+,lead:^,space:>,trail:<,eol:%
- call assert_equal(['+------+^^one>>two<<%'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['+------+^^one>>two<<%'], ScreenLines(1, virtcol('$')))
-
-
- split
- setlocal listchars=tab:<->,lead:_,space:.,trail:@,eol:#
- let cmd = 'setlocal listchars=tab:{.},lead:-,space:=,trail:#,eol:$,x'
- call assert_fails(cmd, 'E474:')
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['+------+^^one>>two<<%'], ScreenLines(1, virtcol('$')))
-
-
- split
- setlocal listchars=tab:<->,lead:_,space:.,trail:@,eol:#
- let cmd = 'setglobal listchars=tab:{.},lead:-,space:=,trail:#,eol:$,x'
- call assert_fails(cmd, 'E474:')
- call assert_equal(['<------>__one..two@@#'], ScreenLines(1, virtcol('$')))
- close
- call assert_equal(['+------+^^one>>two<<%'], ScreenLines(1, virtcol('$')))
-
- setlocal listchars=multispace:---+
- split
- call s:CheckListCharsValue('multispace:---+')
- close
- %bw!
- set list& listchars&
- endfunc
- func Test_listchars_foldcolumn()
- CheckScreendump
- let lines =<< trim END
- call setline(1, ['aaa', '', 'a', 'aaaaaa'])
- vsplit
- vsplit
- windo set signcolumn=yes foldcolumn=1 winminwidth=0 nowrap list listchars=extends:>,precedes:<
- END
- call writefile(lines, 'XTest_listchars', 'D')
- let buf = RunVimInTerminal('-S XTest_listchars', {'rows': 10, 'cols': 60})
- call term_sendkeys(buf, "13\<C-W>>")
- call VerifyScreenDump(buf, 'Test_listchars_01', {})
- call term_sendkeys(buf, "\<C-W>>")
- call VerifyScreenDump(buf, 'Test_listchars_02', {})
- call term_sendkeys(buf, "\<C-W>>")
- call VerifyScreenDump(buf, 'Test_listchars_03', {})
- call term_sendkeys(buf, "\<C-W>>")
- call VerifyScreenDump(buf, 'Test_listchars_04', {})
- call term_sendkeys(buf, "\<C-W>>")
- call VerifyScreenDump(buf, 'Test_listchars_05', {})
- call term_sendkeys(buf, "\<C-W>h")
- call term_sendkeys(buf, ":set nowrap foldcolumn=4\<CR>")
- call term_sendkeys(buf, "15\<C-W><")
- call VerifyScreenDump(buf, 'Test_listchars_06', {})
- call term_sendkeys(buf, "4\<C-W><")
- call VerifyScreenDump(buf, 'Test_listchars_07', {})
-
- call StopVimInTerminal(buf)
- endfunc
- func Test_listchars_precedes_with_wide_char()
- new
- setlocal nowrap list listchars=eol:$,precedes:!
- call setline(1, '123口456')
- call assert_equal(['123口456$ '], ScreenLines(1, 10))
- let attr = screenattr(1, 9)
- normal! zl
- call assert_equal(['!3口456$ '], ScreenLines(1, 10))
- call assert_equal(attr, screenattr(1, 1))
- normal! zl
- call assert_equal(['!口456$ '], ScreenLines(1, 10))
- call assert_equal(attr, screenattr(1, 1))
- normal! zl
- call assert_equal(['!<456$ '], ScreenLines(1, 10))
- call assert_equal(attr, screenattr(1, 1))
- call assert_equal(attr, screenattr(1, 2))
- normal! zl
- call assert_equal(['!456$ '], ScreenLines(1, 10))
- call assert_equal(attr, screenattr(1, 1))
- normal! zl
- call assert_equal(['!56$ '], ScreenLines(1, 10))
- call assert_equal(attr, screenattr(1, 1))
- normal! zl
- call assert_equal(['!6$ '], ScreenLines(1, 10))
- call assert_equal(attr, screenattr(1, 1))
- bw!
- endfunc
- func Test_listchars_precedes_with_tab()
- new
- setlocal nowrap list listchars=eol:$,precedes:!,tab:<->
- call setline(1, "1234\t56")
- let expected_line = '1234<-->56$ '
- call assert_equal([expected_line], ScreenLines(1, 12))
- let expected_attrs = mapnew(range(1, 12), 'screenattr(1, v:val)')
- let attr = expected_attrs[-2]
- for i in range(8)
- normal! zl
- let expected_line = '!' .. expected_line[2:] .. ' '
- let expected_attrs = [attr] + expected_attrs[2:] + expected_attrs[-1:]
- call assert_equal([expected_line], ScreenLines(1, 12))
- let attrs = mapnew(range(1, 12), 'screenattr(1, v:val)')
- call assert_equal(expected_attrs, attrs)
- endfor
- bw!
- endfunc
|