1
0
forked from aniani/vim

patch 8.2.4091: virtcol is recomputed for statusline unnecessarily

Problem:    Virtcol is recomputed for statusline unnecessarily.
Solution:   Just use "w_virtcol". (closes #9523)
This commit is contained in:
zeertzjq
2022-01-14 20:11:38 +00:00
committed by Bram Moolenaar
parent 26ebf1f036
commit 0f112052ac
3 changed files with 12 additions and 9 deletions

View File

@@ -4610,15 +4610,7 @@ build_stl_str_hl(
case STL_VIRTCOL:
case STL_VIRTCOL_ALT:
// In list mode virtcol needs to be recomputed
virtcol = wp->w_virtcol;
if (wp->w_p_list && wp->w_lcs_chars.tab1 == NUL)
{
wp->w_p_list = FALSE;
getvcol(wp, &wp->w_cursor, NULL, &virtcol, NULL);
wp->w_p_list = TRUE;
}
++virtcol;
virtcol = wp->w_virtcol + 1;
// Don't display %V if it's the same as %c.
if (opt == STL_VIRTCOL_ALT
&& (virtcol == (colnr_T)(!(State & INSERT) && empty_line

View File

@@ -196,7 +196,16 @@ func Test_statusline()
set virtualedit=all
norm 10|
call assert_match('^10,-10\s*$', s:get_statusline())
set list
call assert_match('^10,-10\s*$', s:get_statusline())
set virtualedit&
exe "norm A\<Tab>\<Tab>a\<Esc>"
" In list mode a <Tab> is shown as "^I", which is 2-wide.
call assert_match('^9,-9\s*$', s:get_statusline())
set list&
" Now the second <Tab> ends at the 16th screen column.
call assert_match('^17,-17\s*$', s:get_statusline())
undo
" %w: Preview window flag, text is "[Preview]".
" %W: Preview window flag, text is ",PRV".

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4091,
/**/
4090,
/**/