Patch 8.0.0518
Problem: Storing a zero byte from a multi-byte character causes fold text
to show up wrong.
Solution: Avoid putting zero in ScreenLines. (Christian Brabandt,
closes #1567)
Files: src/screen.c, src/testdir/test_display.vim
*** ../vim-8.0.0517/src/screen.c 2017-03-16 17:23:26.835815782 +0100
--- src/screen.c 2017-03-29 14:35:40.360222232 +0200
***************
*** 2697,2708 ****
{
ScreenLinesUC[off + col] = fill_fold;
ScreenLinesC[0][off + col] = 0;
}
else
ScreenLinesUC[off + col] = 0;
}
#endif
! ScreenLines[off + col++] = fill_fold;
}
if (text != buf)
--- 2697,2711 ----
{
ScreenLinesUC[off + col] = fill_fold;
ScreenLinesC[0][off + col] = 0;
+ ScreenLines[off + col] = 0x80; /* avoid storing zero */
}
else
ScreenLinesUC[off + col] = 0;
+ col++;
}
+ else
#endif
! ScreenLines[off + col++] = fill_fold;
}
if (text != buf)
*** ../vim-8.0.0517/src/testdir/test_display.vim 2016-12-09
19:51:45.715697789 +0100
--- src/testdir/test_display.vim 2017-03-29 14:35:40.360222232 +0200
***************
*** 3,20 ****
set term=ansi
endif
! function! s:screenline(lnum, nr) abort
! let line = []
! for j in range(a:nr)
! for c in range(1, winwidth(0))
! call add(line, nr2char(screenchar(a:lnum+j, c)))
! endfor
! call add(line, "\n")
! endfor
! return join(line, '')
! endfunction
! function! Test_display_foldcolumn()
new
vnew
vert resize 25
--- 3,14 ----
set term=ansi
endif
! source view_util.vim
! func! Test_display_foldcolumn()
! if !has("folding")
! return
! endif
new
vnew
vert resize 25
***************
*** 23,39 ****
1put='e more noise blah blah‚ more stuff here'
! let expect = "e more noise blah blah<82\n> more stuff here \n"
call cursor(2, 1)
norm! zt
! redraw!
! call assert_equal(expect, s:screenline(1,2))
set fdc=2
! redraw!
! let expect = " e more noise blah blah<\n 82> more stuff here \n"
! call assert_equal(expect, s:screenline(1,2))
quit!
quit!
! endfunction
--- 17,59 ----
1put='e more noise blah blah‚ more stuff here'
! let expect = [
! \ "e more noise blah blah<82",
! \ "> more stuff here "
! \ ]
call cursor(2, 1)
norm! zt
! let lines=ScreenLines([1,2], winwidth(0))
! call assert_equal(expect, lines)
set fdc=2
! let lines=ScreenLines([1,2], winwidth(0))
! let expect = [
! \ " e more noise blah blah<",
! \ " 82> more stuff here "
! \ ]
! call assert_equal(expect, lines)
quit!
quit!
! endfunc
!
! func! Test_display_foldtext_mbyte()
! if !has("folding") || !has("multi_byte")
! return
! endif
! call NewWindow(10, 40)
! call append(0, range(1,20))
! exe "set foldmethod=manual foldtext=foldtext()
fillchars=fold:\u2500,vert:\u2502 fdc=2"
! call cursor(2, 1)
! norm! zf13G
! let lines=ScreenLines([1,3], winwidth(0)+1)
! let expect=[
! \ " 1 \u2502",
! \ "+ +-- 12 lines: 2". repeat("\u2500", 23). "\u2502",
! \ " 14 \u2502",
! \ ]
! call assert_equal(expect, lines)
! set foldtext& fillchars& foldmethod& fdc&
! bw!
! endfunc
*** ../vim-8.0.0517/src/version.c 2017-03-29 14:19:21.886199149 +0200
--- src/version.c 2017-03-29 14:39:51.506650519 +0200
***************
*** 766,767 ****
--- 766,769 ----
{ /* Add new patch number below this line */
+ /**/
+ 518,
/**/
--
A computer without Windows is like a fish without a bicycle.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.