diff options
-rw-r--r-- | src/screen.c | 15 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/screen.c b/src/screen.c index 0e76d8cef..438627ace 100644 --- a/src/screen.c +++ b/src/screen.c @@ -4269,7 +4269,20 @@ win_line(wp, lnum, startrow, endrow, nochange) { /* tab amount depends on current column */ n_extra = (int)wp->w_buffer->b_p_ts - - VCOL_HLC % (int)wp->w_buffer->b_p_ts - 1; + - vcol % (int)wp->w_buffer->b_p_ts - 1; +#ifdef FEAT_CONCEAL + /* Tab alignment should be identical regardless of + * 'conceallevel' value. So tab compensates of all + * previous concealed characters, and thus resets vcol_off + * and boguscols accumulated so far in the line. Note that + * the tab can be longer than 'tabstop' when there + * are concealed characters. */ + n_extra += vcol_off; + vcol -= vcol_off; + vcol_off = 0; + col -= boguscols; + boguscols = 0; +#endif #ifdef FEAT_MBYTE mb_utf8 = FALSE; /* don't draw as UTF-8 */ #endif diff --git a/src/version.c b/src/version.c index 411d55823..ad2816e73 100644 --- a/src/version.c +++ b/src/version.c @@ -726,6 +726,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 747, +/**/ 746, /**/ 745, |