diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/screen.c | 8 | ||||
| -rw-r--r-- | src/nvim/testdir/test_display.vim | 56 | ||||
| -rw-r--r-- | src/nvim/version.c | 2 | 
3 files changed, 45 insertions, 21 deletions
| diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 27701c4643..c302ac695e 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -1924,10 +1924,14 @@ static void fold_line(win_T *wp, long fold_count, foldinfo_T *foldinfo, linenr_T        if (fill_fold >= 0x80) {          ScreenLinesUC[off + col] = fill_fold;          ScreenLinesC[0][off + col] = 0; -      } else +        ScreenLines[off + col] = 0x80;  // avoid storing zero +      } else {          ScreenLinesUC[off + col] = 0; +      } +      col++; +    } else { +      ScreenLines[off + col++] = fill_fold;      } -    ScreenLines[off + col++] = fill_fold;    }    if (text != buf) diff --git a/src/nvim/testdir/test_display.vim b/src/nvim/testdir/test_display.vim index 609e16c737..4253b56933 100644 --- a/src/nvim/testdir/test_display.vim +++ b/src/nvim/testdir/test_display.vim @@ -3,18 +3,12 @@ if !has('gui_running') && has('unix')    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 +source view_util.vim -function! Test_display_foldcolumn() +func! Test_display_foldcolumn() +  if !has("folding") +    return +  endif    new    vnew    vert resize 25 @@ -23,17 +17,43 @@ function! Test_display_foldcolumn()    1put='e more noise blah blah‚ more stuff here' -  let expect = "e more noise blah blah<82\n> more stuff here        \n" +  let expect = [ +        \ "e more noise blah blah<82", +        \ "> more stuff here        " +        \ ]    call cursor(2, 1)    norm! zt -  redraw! -  call assert_equal(expect, s:screenline(1,2)) +  let lines=ScreenLines([1,2], winwidth(0)) +  call assert_equal(expect, lines)    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)) +  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! -endfunction +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 diff --git a/src/nvim/version.c b/src/nvim/version.c index a7479c6b18..b6386049bf 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -434,7 +434,7 @@ static const int included_patches[] = {    // 521,    // 520,    // 519, -  // 518, +  518,    // 517,    // 516,    // 515, | 
