vim-patch:8.0.0126

Problem:    Display problem with 'foldcolumn' and a wide character.
            (esiegerman)
Solution:   Don't use "extra" but an allocated buffer. (Christian Brabandt,
            closes vim/vim#1310)

6270660611
This commit is contained in:
Justin M. Keyes 2017-07-29 02:26:21 +02:00
parent df02f9cc37
commit 1bcb3ed0e2
3 changed files with 50 additions and 8 deletions

View File

@ -2705,13 +2705,18 @@ win_line (
draw_state = WL_FOLD;
if (fdc > 0) {
// Draw the 'foldcolumn'.
fill_foldcolumn(extra, wp, false, lnum);
n_extra = fdc;
p_extra = extra;
p_extra[n_extra] = NUL;
c_extra = NUL;
char_attr = win_hl_attr(wp, HLF_FC);
// Draw the 'foldcolumn'. Allocate a buffer, "extra" may
// already be in used.
p_extra_free = xmalloc(12 + 1);
if (p_extra_free != NULL) {
fill_foldcolumn(p_extra_free, wp, false, lnum);
n_extra = fdc;
p_extra_free[n_extra] = NUL;
p_extra = p_extra_free;
c_extra = NUL;
char_attr = win_hl_attr(wp, HLF_FC);
}
}
}

View File

@ -0,0 +1,37 @@
" Test for displaying stuff
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
function! Test_display_foldcolumn()
new
vnew
vert resize 25
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

View File

@ -826,7 +826,7 @@ static const int included_patches[] = {
// 129 NA
// 128,
127,
// 126,
126,
// 125,
124,
// 123 NA