1" Functions about view shared by several tests 2 3" Only load this script once. 4if exists('*ScreenLines') 5 finish 6endif 7 8" ScreenLines(lnum, width) or 9" ScreenLines([start, end], width) 10function! ScreenLines(lnum, width) abort 11 redraw! 12 if type(a:lnum) == v:t_list 13 let start = a:lnum[0] 14 let end = a:lnum[1] 15 else 16 let start = a:lnum 17 let end = a:lnum 18 endif 19 let lines = [] 20 for l in range(start, end) 21 let lines += [join(map(range(1, a:width), 'nr2char(screenchar(l, v:val))'), '')] 22 endfor 23 return lines 24endfunction 25 26function! ScreenAttrs(lnum, width) abort 27 redraw! 28 if type(a:lnum) == v:t_list 29 let start = a:lnum[0] 30 let end = a:lnum[1] 31 else 32 let start = a:lnum 33 let end = a:lnum 34 endif 35 let attrs = [] 36 for l in range(start, end) 37 let attrs += [map(range(1, a:width), 'screenattr(l, v:val)')] 38 endfor 39 return attrs 40endfunction 41 42function! NewWindow(height, width) abort 43 exe a:height . 'new' 44 exe a:width . 'vsp' 45 redraw! 46endfunction 47 48function! CloseWindow() abort 49 bw! 50 redraw! 51endfunction 52