Skip to content
Permalink
Browse files

patch 8.0.1652: term_dumpwrite() does not output composing characters

Problem:    term_dumpwrite() does not output composing characters.
Solution:   Use the cell index.
  • Loading branch information
brammool committed Mar 29, 2018
1 parent 0751f51 commit f06b0b6c8f85ea9c320f2be30b25ed084969c1e2
Showing with 25 additions and 1 deletion.
  1. +1 −1 src/terminal.c
  2. +22 −0 src/testdir/test_terminal.vim
  3. +2 −0 src/version.c
@@ -3573,7 +3573,7 @@ f_term_dumpwrite(typval_T *argvars, typval_T *rettv UNUSED)
for (i = 0; i < VTERM_MAX_CHARS_PER_CELL
&& cell.chars[i] != NUL; ++i)
{
len = utf_char2bytes(cell.chars[0], charbuf);
len = utf_char2bytes(cell.chars[i], charbuf);
fwrite(charbuf, len, 1, fd);
}
}
@@ -978,6 +978,28 @@ func Check_dump01(off)
call assert_equal(':popup PopUp :', trim(getline(a:off + 20)))
endfunc

func Test_terminal_dumpwrite_composing()
if !CanRunVimInTerminal()
return
endif
let save_enc = &encoding
set encoding=utf-8
call assert_equal(1, winnr('$'))

let text = " a\u0300 e\u0302 o\u0308"
call writefile([text], 'Xcomposing')
let buf = RunVimInTerminal('Xcomposing', {})
call WaitFor({-> term_getline(buf, 1) =~ text})
call term_dumpwrite(buf, 'Xdump')
let dumpline = readfile('Xdump')[0]
call assert_match('|à| |ê| |ö', dumpline)

call StopVimInTerminal(buf)
call delete('Xcomposing')
call delete('Xdump')
let &encoding = save_enc
endfunc

" just testing basic functionality.
func Test_terminal_dumpload()
call assert_equal(1, winnr('$'))
@@ -762,6 +762,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1652,
/**/
1651,
/**/

0 comments on commit f06b0b6

Please sign in to comment.
You can’t perform that action at this time.