mirror of
https://github.com/neovim/neovim.git
synced 2026-04-29 18:54:18 +00:00
Problem: "extends" from 'listchars' is used when 'list' is off. (Hiroyuki
Yoshinaga)
Solution: Only use the "extends" character when 'list' is on. (Hirohito
Higashi, closes vim/vim#4360)
a5c6a0b6c7
135 lines
2.7 KiB
VimL
135 lines
2.7 KiB
VimL
" Tests for 'listchars' display with 'list' and :list
|
|
|
|
source view_util.vim
|
|
|
|
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<<>-$',
|
|
\ '<$'
|
|
\ ]
|
|
redraw!
|
|
for i in range(1, 5)
|
|
call cursor(i, 1)
|
|
call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
|
|
endfor
|
|
|
|
set listchars-=trail:<
|
|
let expected = [
|
|
\ '>-------aa>-----$',
|
|
\ '..bb>---..$',
|
|
\ '...cccc>.$',
|
|
\ 'dd........ee..>-$',
|
|
\ '.$'
|
|
\ ]
|
|
redraw!
|
|
for i in range(1, 5)
|
|
call cursor(i, 1)
|
|
call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
|
|
endfor
|
|
|
|
" tab with 3rd character.
|
|
set listchars-=tab:>-
|
|
set listchars+=tab:<=>,trail:-
|
|
let expected = [
|
|
\ '<======>aa<====>$',
|
|
\ '..bb<==>--$',
|
|
\ '...cccc>-$',
|
|
\ 'dd........ee--<>$',
|
|
\ '-$'
|
|
\ ]
|
|
redraw!
|
|
for i in range(1, 5)
|
|
call cursor(i, 1)
|
|
call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
|
|
endfor
|
|
|
|
set listchars-=trail:-
|
|
let expected = [
|
|
\ '<======>aa<====>$',
|
|
\ '..bb<==>..$',
|
|
\ '...cccc>.$',
|
|
\ 'dd........ee..<>$',
|
|
\ '.$'
|
|
\ ]
|
|
redraw!
|
|
for i in range(1, 5)
|
|
call cursor(i, 1)
|
|
call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
|
|
endfor
|
|
|
|
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)
|
|
|
|
|
|
" test nbsp
|
|
normal ggdG
|
|
set listchars=nbsp:X,trail:Y
|
|
set list
|
|
" Non-breaking space
|
|
let nbsp = nr2char(0xa0)
|
|
call append(0, [ ">".nbsp."<" ])
|
|
|
|
let expected = '>X< '
|
|
|
|
redraw!
|
|
call cursor(1, 1)
|
|
call assert_equal([expected], ScreenLines(1, virtcol('$')))
|
|
|
|
set listchars=nbsp:X
|
|
redraw!
|
|
call cursor(1, 1)
|
|
call assert_equal([expected], ScreenLines(1, virtcol('$')))
|
|
|
|
" test extends
|
|
normal ggdG
|
|
set listchars=extends:Z
|
|
set nowrap
|
|
set nolist
|
|
call append(0, [ repeat('A', &columns + 1) ])
|
|
|
|
let expected = repeat('A', &columns)
|
|
|
|
redraw!
|
|
call cursor(1, 1)
|
|
call assert_equal([expected], ScreenLines(1, &columns))
|
|
|
|
set list
|
|
let expected = expected[:-2] . 'Z'
|
|
redraw!
|
|
call cursor(1, 1)
|
|
call assert_equal([expected], ScreenLines(1, &columns))
|
|
|
|
enew!
|
|
set listchars& ff&
|
|
endfunc
|