0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 8.2.4644: redrawing too often when 'relativenumber' is set

Problem:    Redrawing too often when 'relativenumber' is set.
Solution:   Only redraw when the cursor line changed. (Lewis Russell,
            closes #10040)
This commit is contained in:
Lewis Russell
2022-03-29 11:38:17 +01:00
committed by Bram Moolenaar
parent 24565cf27b
commit 1624639ec8
4 changed files with 10 additions and 4 deletions

View File

@@ -641,7 +641,7 @@ changed_common(
set_topline(wp, wp->w_topline); set_topline(wp, wp->w_topline);
#endif #endif
// Relative numbering may require updating more. // Relative numbering may require updating more.
if (wp->w_p_rnu) if (wp->w_p_rnu && xtra != 0)
redraw_win_later(wp, SOME_VALID); redraw_win_later(wp, SOME_VALID);
#ifdef FEAT_SYN_HL #ifdef FEAT_SYN_HL
// Cursor line highlighting probably need to be updated with // Cursor line highlighting probably need to be updated with

View File

@@ -2507,11 +2507,11 @@ win_update(win_T *wp)
} }
else else
{ {
if (wp->w_p_rnu) if (wp->w_p_rnu && wp->w_last_cursor_lnum_rnu != wp->w_cursor.lnum)
{ {
#ifdef FEAT_FOLDING #ifdef FEAT_FOLDING
// 'relativenumber' set: The text doesn't need to be drawn, but // 'relativenumber' set and the cursor moved vertically: The
// the number column nearly always does. // text doesn't need to be drawn, but the number column does.
fold_count = foldedCount(wp, lnum, &win_foldinfo); fold_count = foldedCount(wp, lnum, &win_foldinfo);
if (fold_count != 0) if (fold_count != 0)
fold_line(wp, fold_count, &win_foldinfo, lnum, row); fold_line(wp, fold_count, &win_foldinfo, lnum, row);
@@ -2553,6 +2553,7 @@ win_update(win_T *wp)
// update w_last_cursorline. // update w_last_cursorline.
wp->w_last_cursorline = wp->w_p_cul ? wp->w_cursor.lnum : 0; wp->w_last_cursorline = wp->w_p_cul ? wp->w_cursor.lnum : 0;
#endif #endif
wp->w_last_cursor_lnum_rnu = wp->w_p_rnu ? wp->w_cursor.lnum : 0;
#ifdef FEAT_VTP #ifdef FEAT_VTP
// Rewrite the character at the end of the screen line. // Rewrite the character at the end of the screen line.

View File

@@ -3465,6 +3465,9 @@ struct window_S
colnr_T w_old_visual_col; // last known start of visual part colnr_T w_old_visual_col; // last known start of visual part
colnr_T w_old_curswant; // last known value of Curswant colnr_T w_old_curswant; // last known value of Curswant
linenr_T w_last_cursor_lnum_rnu; // cursor lnum when 'rnu' was last
// redrawn
lcs_chars_T w_lcs_chars; // 'listchars' characters lcs_chars_T w_lcs_chars; // 'listchars' characters
/* /*

View File

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