diff options
-rw-r--r-- | src/Makefile | 1 | ||||
-rw-r--r-- | src/screen.c | 20 | ||||
-rw-r--r-- | src/testdir/Make_all.mak | 1 | ||||
-rw-r--r-- | src/testdir/test_display.vim | 37 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 54 insertions, 7 deletions
diff --git a/src/Makefile b/src/Makefile index a24eb7b72d..dcd59fc671 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2085,6 +2085,7 @@ test_arglist \ test_delete \ test_diffmode \ test_digraph \ + test_display \ test_ex_undo \ test_execute_func \ test_expand \ diff --git a/src/screen.c b/src/screen.c index 45e7c7c19a..ee61a01aea 100644 --- a/src/screen.c +++ b/src/screen.c @@ -3649,13 +3649,19 @@ 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 = hl_attr(HLF_FC); + /* Draw the 'foldcolumn'. Allocate a buffer, "extra" may + * 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; + p_extra_free[n_extra] = NUL; + p_extra = p_extra_free; + c_extra = NUL; + char_attr = hl_attr(HLF_FC); + } } } #endif diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index 17c70f3455..c78e34bd8a 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -148,6 +148,7 @@ NEW_TESTS = test_arglist.res \ test_cscope.res \ test_diffmode.res \ test_digraph.res \ + test_display.res \ test_farsi.res \ test_fnameescape.res \ test_gf.res \ diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim new file mode 100644 index 0000000000..ba7b7d7626 --- /dev/null +++ b/src/testdir/test_display.vim @@ -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 diff --git a/src/version.c b/src/version.c index afc79d4734..3cd19f1774 100644 --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 126, +/**/ 125, /**/ 124, |