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.

Raspunde prin e-mail lui