# HG changeset patch # User Bram Moolenaar # Date 1354717950 -3600 # Node ID cd59ba19985a3b3bd66dffdcf59b00427f844818 # Parent 78f94fab8bf4babc4845ce7f2a433d450b7530f4 updated for version 7.3.747 Problem: When characters are concealed text aligned with tabs are no longer aligned, e.g. at ":help :index". Solution: Compensate space for tabs for concealed characters. (Dominique Pelle) diff --git a/src/screen.c b/src/screen.c --- a/src/screen.c +++ b/src/screen.c @@ -4269,7 +4269,20 @@ win_line(wp, lnum, startrow, endrow, noc { /* 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 --- 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,