1544d3bc9SBram Moolenaar" Functions about view shared by several tests 2544d3bc9SBram Moolenaar 30aa398f5SBram Moolenaar" Only load this script once. 47a39dd7fSBram Moolenaarif exists('*Screenline') 50aa398f5SBram Moolenaar finish 60aa398f5SBram Moolenaarendif 70aa398f5SBram Moolenaar 87a39dd7fSBram Moolenaar" Get line "lnum" as displayed on the screen. 97a39dd7fSBram Moolenaar" Trailing white space is trimmed. 107a39dd7fSBram Moolenaarfunc Screenline(lnum) 117a39dd7fSBram Moolenaar let chars = [] 127a39dd7fSBram Moolenaar for c in range(1, winwidth(0)) 137a39dd7fSBram Moolenaar call add(chars, nr2char(screenchar(a:lnum, c))) 147a39dd7fSBram Moolenaar endfor 157a39dd7fSBram Moolenaar let line = join(chars, '') 167a39dd7fSBram Moolenaar return matchstr(line, '^.\{-}\ze\s*$') 177a39dd7fSBram Moolenaarendfunc 187a39dd7fSBram Moolenaar 192912abb3SBram Moolenaar" Get text on the screen, including composing characters. 202912abb3SBram Moolenaar" ScreenLines(lnum, width) or 212912abb3SBram Moolenaar" ScreenLines([start, end], width) 2248aed082SBram Moolenaarfunction! ScreenLines(lnum, width) abort 232912abb3SBram Moolenaar redraw! 242912abb3SBram Moolenaar if type(a:lnum) == v:t_list 252912abb3SBram Moolenaar let start = a:lnum[0] 262912abb3SBram Moolenaar let end = a:lnum[1] 272912abb3SBram Moolenaar else 282912abb3SBram Moolenaar let start = a:lnum 292912abb3SBram Moolenaar let end = a:lnum 302912abb3SBram Moolenaar endif 312912abb3SBram Moolenaar let lines = [] 322912abb3SBram Moolenaar for l in range(start, end) 332912abb3SBram Moolenaar let lines += [join(map(range(1, a:width), 'screenstring(l, v:val)'), '')] 342912abb3SBram Moolenaar endfor 352912abb3SBram Moolenaar return lines 362912abb3SBram Moolenaarendfunction 372912abb3SBram Moolenaar 380aa398f5SBram Moolenaarfunction! ScreenAttrs(lnum, width) abort 390aa398f5SBram Moolenaar redraw! 400aa398f5SBram Moolenaar if type(a:lnum) == v:t_list 410aa398f5SBram Moolenaar let start = a:lnum[0] 420aa398f5SBram Moolenaar let end = a:lnum[1] 430aa398f5SBram Moolenaar else 440aa398f5SBram Moolenaar let start = a:lnum 450aa398f5SBram Moolenaar let end = a:lnum 460aa398f5SBram Moolenaar endif 470aa398f5SBram Moolenaar let attrs = [] 480aa398f5SBram Moolenaar for l in range(start, end) 490aa398f5SBram Moolenaar let attrs += [map(range(1, a:width), 'screenattr(l, v:val)')] 500aa398f5SBram Moolenaar endfor 510aa398f5SBram Moolenaar return attrs 520aa398f5SBram Moolenaarendfunction 530aa398f5SBram Moolenaar 54544d3bc9SBram Moolenaarfunction! NewWindow(height, width) abort 55544d3bc9SBram Moolenaar exe a:height . 'new' 56544d3bc9SBram Moolenaar exe a:width . 'vsp' 57*bffba7f7SBram Moolenaar set winfixwidth winfixheight 58544d3bc9SBram Moolenaar redraw! 59544d3bc9SBram Moolenaarendfunction 60544d3bc9SBram Moolenaar 61544d3bc9SBram Moolenaarfunction! CloseWindow() abort 62544d3bc9SBram Moolenaar bw! 63544d3bc9SBram Moolenaar redraw! 64544d3bc9SBram Moolenaarendfunction 65