Mercurial > vim
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) |