From 49f9dd7b916fb32bfd0cc9a50f8c4f9bb1bb760b Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 29 Aug 2014 12:08:43 +0200 Subject: =?UTF-8?q?updated=20for=20version=207.4.422=20Problem:=20=20=20?= =?UTF-8?q?=20When=20using=20conceal=20with=20linebreak=20some=20text=20is?= =?UTF-8?q?=20not=20displayed=20=20=20=20=20=20=20=20=20=20=20=20=20correc?= =?UTF-8?q?tly.=20(Gr=C3=BCner=20Gimpel)=20Solution:=20=20=20Check=20for?= =?UTF-8?q?=20conceal=20mode=20when=20using=20linebreak.=20(Christian=20Br?= =?UTF-8?q?abandt)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/screen.c | 11 +++++++++++ src/testdir/test_listlbr.in | 10 ++++++++++ src/testdir/test_listlbr.ok | 7 +++++++ src/version.c | 2 ++ 4 files changed, 30 insertions(+) (limited to 'src') 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, /**/ -- cgit v1.2.3