src/nvim/testdir/runnvim.vim: improve escaping of non-printables

This commit is contained in:
Daniel Hahler 2019-08-21 02:28:59 +02:00
parent 7adea68c1e
commit d993ec5db8

View File

@ -7,6 +7,13 @@ function s:logger.on_exit(id, data, event)
call add(self.d_events, [a:event, ['']]) call add(self.d_events, [a:event, ['']])
endfunction endfunction
" Replace non-printable chars by special sequence, or "<%x>".
let s:escaped_char = {"\n": '\n', "\r": '\r', "\t": '\t'}
function! s:escape_non_printable(char) abort
let r = get(s:escaped_char, a:char)
return r == 0 ? printf('<%x>', char2nr(a:char)) : string(r)
endfunction
function Main() function Main()
let argc = +$NVIM_TEST_ARGC let argc = +$NVIM_TEST_ARGC
let args = [] let args = []
@ -26,9 +33,8 @@ function Main()
\'join(map(v:val[1], '. \'join(map(v:val[1], '.
\ '''substitute(v:val, '. \ '''substitute(v:val, '.
\ '"\\v\\C(\\p@!.|\\<)", '. \ '"\\v\\C(\\p@!.|\\<)", '.
\ '"\\=printf(\"<%x>\", '. \ '"\\=s:escape_non_printable(submatch(0))", '.
\ 'char2nr(submatch(0)))", '. \ '"g")''), '.
\ '"")''), '.
\ '''\n'')') \ '''\n'')')
call setline(1, [ call setline(1, [
\ 'Job exited with code ' . results[0], \ 'Job exited with code ' . results[0],