# HG changeset patch # User Christian Brabandt # Date 1496583905 -7200 # Node ID ec47e673a021a6a1abf89fda954b7dc09163d5cc # Parent 8a4978f393f2e689a52c066cee57164271997275 patch 8.0.0610: the screen is redrawn when default 'background' is detected commit https://github.com/vim/vim/commit/4b974d54434b8020771be7225da94648e9ec961a Author: Bram Moolenaar Date: Sun Jun 4 15:37:46 2017 +0200 patch 8.0.0610: the screen is redrawn when default 'background' is detected Problem: The screen is redrawn when t_BG is set and used to detect the value for 'background'. Solution: Don't redraw when the value of 'background' didn't change. diff --git a/src/term.c b/src/term.c --- a/src/term.c +++ b/src/term.c @@ -4385,14 +4385,20 @@ check_termcode( if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0 && tp[j + 11] == '/' && tp[j + 16] == '/' && !option_was_set((char_u *)"bg")) - {/* TODO: don't set option when already the right value */ + { + char *newval = (3 * '6' < tp[j+7] + tp[j+12] + + tp[j+17]) ? "light" : "dark"; + LOG_TR("Received RBG"); rbg_status = RBG_GOT; - set_option_value((char_u *)"bg", 0L, (char_u *)( - (3 * '6' < tp[j+7] + tp[j+12] + tp[j+17]) - ? "light" : "dark"), 0); - reset_option_was_set((char_u *)"bg"); - redraw_asap(CLEAR); + if (STRCMP(p_bg, newval) != 0) + { + /* value differs, apply it */ + set_option_value((char_u *)"bg", 0L, + (char_u *)newval, 0); + reset_option_was_set((char_u *)"bg"); + redraw_asap(CLEAR); + } } /* got finished code: consume it */ diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 610, +/**/ 609, /**/ 608,