xref: /vim-8.2.3635/src/testdir/view_util.vim (revision bffba7f7)
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