changeset 2136:431ebc9412a8 v7.2.418

updated for version 7.2.418 Problem: Vim tries to set the background or foreground color in a terminal to -1. (Graywh) Happens with ":hi Normal ctermbg=NONE". Solution: When resetting the foreground or background color don't set the color, let the clear screen code do that.
author Bram Moolenaar <bram@zimbu.org>
date Thu, 13 May 2010 15:40:30 +0200
parents 7aee5e68548a
children dabcabce3f9d
files src/syntax.c src/version.c
diffstat 2 files changed, 20 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -7136,7 +7136,8 @@ do_highlight(line, forceit, init)
 		    }
 		}
 	    }
-	    /* Add one to the argument, to avoid zero */
+	    /* Add one to the argument, to avoid zero.  Zero is used for
+	     * "NONE", then "color" is -1. */
 	    if (key[5] == 'F')
 	    {
 		HL_TABLE()[idx].sg_cterm_fg = color + 1;
@@ -7150,7 +7151,7 @@ do_highlight(line, forceit, init)
 #endif
 		    {
 			must_redraw = CLEAR;
-			if (termcap_active)
+			if (termcap_active && color >= 0)
 			    term_fg_color(color);
 		    }
 		}
@@ -7167,16 +7168,21 @@ do_highlight(line, forceit, init)
 #endif
 		    {
 			must_redraw = CLEAR;
-			if (termcap_active)
-			    term_bg_color(color);
-			if (t_colors < 16)
-			    i = (color == 0 || color == 4);
-			else
-			    i = (color < 7 || color == 8);
-			/* Set the 'background' option if the value is wrong. */
-			if (i != (*p_bg == 'd'))
-			    set_option_value((char_u *)"bg", 0L,
-				 i ? (char_u *)"dark" : (char_u *)"light", 0);
+			if (color >= 0)
+			{
+			    if (termcap_active)
+				term_bg_color(color);
+			    if (t_colors < 16)
+				i = (color == 0 || color == 4);
+			    else
+				i = (color < 7 || color == 8);
+			    /* Set the 'background' option if the value is
+			     * wrong. */
+			    if (i != (*p_bg == 'd'))
+				set_option_value((char_u *)"bg", 0L,
+					i ?  (char_u *)"dark"
+					  : (char_u *)"light", 0);
+			}
 		    }
 		}
 	    }
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    418,
+/**/
     417,
 /**/
     416,