Bram Moolenaar | 544d3bc | 2017-02-05 21:14:50 +0100 | [diff] [blame] | 1 | " Functions about view shared by several tests |
| 2 | |
Bram Moolenaar | 0aa398f | 2017-09-30 21:23:55 +0200 | [diff] [blame] | 3 | " Only load this script once. |
| 4 | if exists('*ScreenLines') |
| 5 | finish |
| 6 | endif |
| 7 | |
Bram Moolenaar | 2912abb | 2019-03-29 14:16:42 +0100 | [diff] [blame] | 8 | " Get text on the screen, including composing characters. |
| 9 | " ScreenLines(lnum, width) or |
| 10 | " ScreenLines([start, end], width) |
Bram Moolenaar | 48aed08 | 2019-03-30 15:44:17 +0100 | [diff] [blame] | 11 | function! ScreenLines(lnum, width) abort |
Bram Moolenaar | 2912abb | 2019-03-29 14:16:42 +0100 | [diff] [blame] | 12 | redraw! |
| 13 | if type(a:lnum) == v:t_list |
| 14 | let start = a:lnum[0] |
| 15 | let end = a:lnum[1] |
| 16 | else |
| 17 | let start = a:lnum |
| 18 | let end = a:lnum |
| 19 | endif |
| 20 | let lines = [] |
| 21 | for l in range(start, end) |
| 22 | let lines += [join(map(range(1, a:width), 'screenstring(l, v:val)'), '')] |
| 23 | endfor |
| 24 | return lines |
| 25 | endfunction |
| 26 | |
Bram Moolenaar | 0aa398f | 2017-09-30 21:23:55 +0200 | [diff] [blame] | 27 | function! ScreenAttrs(lnum, width) abort |
| 28 | redraw! |
| 29 | if type(a:lnum) == v:t_list |
| 30 | let start = a:lnum[0] |
| 31 | let end = a:lnum[1] |
| 32 | else |
| 33 | let start = a:lnum |
| 34 | let end = a:lnum |
| 35 | endif |
| 36 | let attrs = [] |
| 37 | for l in range(start, end) |
| 38 | let attrs += [map(range(1, a:width), 'screenattr(l, v:val)')] |
| 39 | endfor |
| 40 | return attrs |
| 41 | endfunction |
| 42 | |
Bram Moolenaar | 544d3bc | 2017-02-05 21:14:50 +0100 | [diff] [blame] | 43 | function! NewWindow(height, width) abort |
| 44 | exe a:height . 'new' |
| 45 | exe a:width . 'vsp' |
| 46 | redraw! |
| 47 | endfunction |
| 48 | |
| 49 | function! CloseWindow() abort |
| 50 | bw! |
| 51 | redraw! |
| 52 | endfunction |