# HG changeset patch # User Bram Moolenaar # Date 1273758030 -7200 # Node ID 431ebc9412a816440aaed887a3d318deb08c6407 # Parent 7aee5e68548a7cd13c74e67439f8c3b8ae6327be 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. diff --git a/src/syntax.c b/src/syntax.c --- 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); + } } } } diff --git a/src/version.c b/src/version.c --- 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,