Mercurial > vim
diff src/drawscreen.c @ 34296:0690fd6f9d48 v9.1.0083
patch 9.1.0083: Redrawing can be improved when deleting lines with 'number'
Commit: https://github.com/vim/vim/commit/ae07ebc04b0726e12b1af39d52e01d86ae79ef0a
Author: zeertzjq <zeertzjq@outlook.com>
Date: Thu Feb 8 11:37:40 2024 +0100
patch 9.1.0083: Redrawing can be improved when deleting lines with 'number'
Problem: Redrawing can be improved when inserting/deleting lines with 'number'.
Solution: Only redraw the number column of lines below changed lines.
Add a test as this wasn't previously tested.
(zeertzjq)
closes: #13985
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 08 Feb 2024 11:45:04 +0100 |
parents | 7afcc5481eb7 |
children | ef421bb0f67e |
line wrap: on
line diff
--- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -1699,11 +1699,6 @@ win_update(win_T *wp) top_end = 1; #endif } - - // When line numbers are displayed need to redraw all lines below - // inserted/deleted lines. - if (mod_top != 0 && buf->b_mod_xlines != 0 && wp->w_p_nu) - mod_bot = MAXLNUM; } wp->w_redraw_top = 0; // reset for next time wp->w_redraw_bot = 0; @@ -2540,11 +2535,16 @@ win_update(win_T *wp) } else { - if (wp->w_p_rnu && wp->w_last_cursor_lnum_rnu != wp->w_cursor.lnum) + // If: + // - 'number' is set and below inserted/deleted lines, or + // - 'relativenumber' is set and cursor moved vertically, + // the text doesn't need to be redrawn, but the number column does. + if ((wp->w_p_nu && mod_top != 0 + && lnum >= mod_bot && buf->b_mod_xlines != 0) + || (wp->w_p_rnu + && wp->w_last_cursor_lnum_rnu != wp->w_cursor.lnum)) { #ifdef FEAT_FOLDING - // 'relativenumber' set and the cursor moved vertically: The - // text doesn't need to be drawn, but the number column does. fold_count = foldedCount(wp, lnum, &win_foldinfo); if (fold_count != 0) fold_line(wp, fold_count, &win_foldinfo, lnum, row);