From: Bram Moolenaar Date: Fri, 29 Aug 2014 10:08:43 +0000 (+0200) Subject: updated for version 7.4.422 X-Git-Tag: v7.4.422 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49f9dd7b916fb32bfd0cc9a50f8c4f9bb1bb760b;p=vim updated for version 7.4.422 Problem: When using conceal with linebreak some text is not displayed correctly. (GrĂ¼ner Gimpel) Solution: Check for conceal mode when using linebreak. (Christian Brabandt) --- diff --git a/src/screen.c b/src/screen.c index 4c134f0e6..7a9311a45 100644 --- a/src/screen.c +++ b/src/screen.c @@ -4514,6 +4514,11 @@ win_line(wp, lnum, startrow, endrow, nochange) int i; int saved_nextra = n_extra; +#ifdef FEAT_CONCEAL + if (is_concealing && vcol_off > 0) + /* there are characters to conceal */ + tab_len += vcol_off; +#endif /* if n_extra > 0, it gives the number of chars, to * use for a tab, else we need to calculate the width * for a tab */ @@ -4539,6 +4544,12 @@ win_line(wp, lnum, startrow, endrow, nochange) #endif } p_extra = p_extra_free; +#ifdef FEAT_CONCEAL + /* n_extra will be increased by FIX_FOX_BOGUSCOLS + * macro below, so need to adjust for that here */ + if (is_concealing && vcol_off > 0) + n_extra -= vcol_off; +#endif } #endif #ifdef FEAT_CONCEAL diff --git a/src/testdir/test_listlbr.in b/src/testdir/test_listlbr.in index 0cce4c23a..2f2812655 100644 --- a/src/testdir/test_listlbr.in +++ b/src/testdir/test_listlbr.in @@ -46,6 +46,16 @@ STARTTEST :redraw! :let line=ScreenChar(winwidth(0)) :call DoRecordScreen() +:let line="_S_\t bla" +:$put =line +:$ +:norm! zt +:let g:test ="Test 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)" +:set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab +:syn match ConcealVar contained /_/ conceal +:syn match All /.*/ contains=ConcealVar +:let line=ScreenChar(winwidth(0)) +:call DoRecordScreen() :%w! test.out :qa! ENDTEST diff --git a/src/testdir/test_listlbr.ok b/src/testdir/test_listlbr.ok index be323d4dc..9b8037f4d 100644 --- a/src/testdir/test_listlbr.ok +++ b/src/testdir/test_listlbr.ok @@ -25,3 +25,10 @@ Test 4: set linebreak with tab and 1 line as long as screen: should break! +aaaaaaaaaaaaaaaaaa ~ ~ +_S_ bla + +Test 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated) +Sabbbbbb bla +~ +~ +~ diff --git a/src/version.c b/src/version.c index d047c9b8d..31d1b34d5 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 422, /**/ 421, /**/