From: zeertzjq Date: Fri, 14 Jan 2022 20:11:38 +0000 (+0000) Subject: patch 8.2.4091: virtcol is recomputed for statusline unnecessarily X-Git-Tag: v8.2.4091 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f112052acaeffd75b7eb001eeb8a246ad12a276;p=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) --- diff --git a/src/buffer.c b/src/buffer.c index 3445b204f..08db0fc28 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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 diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim index a952de69b..28d8798fe 100644 --- a/src/testdir/test_statusline.vim +++ b/src/testdir/test_statusline.vim @@ -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\\a\" + " In list mode a is shown as "^I", which is 2-wide. + call assert_match('^9,-9\s*$', s:get_statusline()) + set list& + " Now the second 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". diff --git a/src/version.c b/src/version.c index b65dac3c5..525c86a76 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 4091, /**/ 4090, /**/