mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
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 #1310)
This commit is contained in:
@@ -2085,6 +2085,7 @@ test_arglist \
|
|||||||
test_delete \
|
test_delete \
|
||||||
test_diffmode \
|
test_diffmode \
|
||||||
test_digraph \
|
test_digraph \
|
||||||
|
test_display \
|
||||||
test_ex_undo \
|
test_ex_undo \
|
||||||
test_execute_func \
|
test_execute_func \
|
||||||
test_expand \
|
test_expand \
|
||||||
|
14
src/screen.c
14
src/screen.c
@@ -3649,15 +3649,21 @@ win_line(
|
|||||||
draw_state = WL_FOLD;
|
draw_state = WL_FOLD;
|
||||||
if (fdc > 0)
|
if (fdc > 0)
|
||||||
{
|
{
|
||||||
/* Draw the 'foldcolumn'. */
|
/* Draw the 'foldcolumn'. Allocate a buffer, "extra" may
|
||||||
fill_foldcolumn(extra, wp, FALSE, lnum);
|
* already be in used. */
|
||||||
|
p_extra_free = alloc(12 + 1);
|
||||||
|
|
||||||
|
if (p_extra_free != NULL)
|
||||||
|
{
|
||||||
|
fill_foldcolumn(p_extra_free, wp, FALSE, lnum);
|
||||||
n_extra = fdc;
|
n_extra = fdc;
|
||||||
p_extra = extra;
|
p_extra_free[n_extra] = NUL;
|
||||||
p_extra[n_extra] = NUL;
|
p_extra = p_extra_free;
|
||||||
c_extra = NUL;
|
c_extra = NUL;
|
||||||
char_attr = hl_attr(HLF_FC);
|
char_attr = hl_attr(HLF_FC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_SIGNS
|
#ifdef FEAT_SIGNS
|
||||||
|
@@ -148,6 +148,7 @@ NEW_TESTS = test_arglist.res \
|
|||||||
test_cscope.res \
|
test_cscope.res \
|
||||||
test_diffmode.res \
|
test_diffmode.res \
|
||||||
test_digraph.res \
|
test_digraph.res \
|
||||||
|
test_display.res \
|
||||||
test_farsi.res \
|
test_farsi.res \
|
||||||
test_fnameescape.res \
|
test_fnameescape.res \
|
||||||
test_gf.res \
|
test_gf.res \
|
||||||
|
37
src/testdir/test_display.vim
Normal file
37
src/testdir/test_display.vim
Normal 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
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
126,
|
||||||
/**/
|
/**/
|
||||||
125,
|
125,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user