Mercurial > vim
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); + } } } }