comparison src/screen.c @ 6627:43f444efe6a2 v7.4.639

updated for version 7.4.639 Problem: Combination of linebreak and conceal doesn't work well. Solution: Fix the display problems. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Tue, 17 Feb 2015 17:26:10 +0100
parents c77ef1bf9623
children 27d9a4d8c168
comparison
equal deleted inserted replaced
6626:7c5728c7f35e 6627:43f444efe6a2
4569 int len = n_extra; 4569 int len = n_extra;
4570 int i; 4570 int i;
4571 int saved_nextra = n_extra; 4571 int saved_nextra = n_extra;
4572 4572
4573 #ifdef FEAT_CONCEAL 4573 #ifdef FEAT_CONCEAL
4574 if ((is_concealing || boguscols > 0) && vcol_off > 0) 4574 if (vcol_off > 0)
4575 /* there are characters to conceal */ 4575 /* there are characters to conceal */
4576 tab_len += vcol_off; 4576 tab_len += vcol_off;
4577 /* boguscols before FIX_FOR_BOGUSCOLS macro from above 4577 /* boguscols before FIX_FOR_BOGUSCOLS macro from above
4578 */ 4578 */
4579 if (wp->w_p_list && lcs_tab1 && old_boguscols > 0 4579 if (wp->w_p_list && lcs_tab1 && old_boguscols > 0
4607 } 4607 }
4608 p_extra = p_extra_free; 4608 p_extra = p_extra_free;
4609 #ifdef FEAT_CONCEAL 4609 #ifdef FEAT_CONCEAL
4610 /* n_extra will be increased by FIX_FOX_BOGUSCOLS 4610 /* n_extra will be increased by FIX_FOX_BOGUSCOLS
4611 * macro below, so need to adjust for that here */ 4611 * macro below, so need to adjust for that here */
4612 if ((is_concealing || boguscols > 0) && vcol_off > 0) 4612 if (vcol_off > 0)
4613 n_extra -= vcol_off; 4613 n_extra -= vcol_off;
4614 #endif 4614 #endif
4615 } 4615 }
4616 #endif 4616 #endif
4617 #ifdef FEAT_CONCEAL 4617 #ifdef FEAT_CONCEAL
4618 /* Tab alignment should be identical regardless of 4618 {
4619 * 'conceallevel' value. So tab compensates of all 4619 int vc_saved = vcol_off;
4620 * previous concealed characters, and thus resets vcol_off 4620
4621 * and boguscols accumulated so far in the line. Note that 4621 /* Tab alignment should be identical regardless of
4622 * the tab can be longer than 'tabstop' when there 4622 * 'conceallevel' value. So tab compensates of all
4623 * are concealed characters. */ 4623 * previous concealed characters, and thus resets
4624 FIX_FOR_BOGUSCOLS; 4624 * vcol_off and boguscols accumulated so far in the
4625 /* Make sure, the highlighting for the tab char will be 4625 * line. Note that the tab can be longer than
4626 * correctly set further below (effectively reverts the 4626 * 'tabstop' when there are concealed characters. */
4627 * FIX_FOR_BOGSUCOLS macro */ 4627 FIX_FOR_BOGUSCOLS;
4628 if (old_boguscols > 0 && n_extra > tab_len && wp->w_p_list 4628
4629 /* Make sure, the highlighting for the tab char will be
4630 * correctly set further below (effectively reverts the
4631 * FIX_FOR_BOGSUCOLS macro */
4632 if (n_extra == tab_len + vc_saved && wp->w_p_list
4629 && lcs_tab1) 4633 && lcs_tab1)
4630 tab_len += n_extra - tab_len; 4634 tab_len += vc_saved;
4635 }
4631 #endif 4636 #endif
4632 #ifdef FEAT_MBYTE 4637 #ifdef FEAT_MBYTE
4633 mb_utf8 = FALSE; /* don't draw as UTF-8 */ 4638 mb_utf8 = FALSE; /* don't draw as UTF-8 */
4634 #endif 4639 #endif
4635 if (wp->w_p_list) 4640 if (wp->w_p_list)