changeset 11453:ec47e673a021 v8.0.0610

patch 8.0.0610: the screen is redrawn when default 'background' is detected commit https://github.com/vim/vim/commit/4b974d54434b8020771be7225da94648e9ec961a Author: Bram Moolenaar <Bram@vim.org> 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.
author Christian Brabandt <cb@256bit.org>
date Sun, 04 Jun 2017 15:45:05 +0200
parents 8a4978f393f2
children 5e21f2c77442
files src/term.c src/version.c
diffstat 2 files changed, 14 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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 */
--- 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,