I discovered another bug.  On non-window terminals when the background
color of some face is specified, but its foreground is not (and vice versa),
then the inverted face uses the wrong color.  These situations are described
by the following excerpts from the face customization buffer:

1.
             [X] Foreground: blue       (sample)
             [X] Background: unspecified-fg (sample)

Currently this sets the face background to blue, and the foreground
to unspecified-bg, i.e. it inverts the unspecified colors (function
toggle_highlight), but puts the specified color (blue) on the wrong
face attribute.

2.
             [X] Foreground: unspecified-bg (sample)
             [X] Background: blue       (sample)

This sets the foreground to blue, and the background to unspecified-fg.

The patch takes care of these cases and uses the correct colors.

Index: src/term.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/term.c,v
retrieving revision 1.162
diff -c -r1.162 term.c
*** src/term.c  17 Jun 2005 14:08:58 -0000      1.162
--- src/term.c  27 Jun 2005 23:27:14 -0000
***************
*** 2005,2018 ****
  
        if (fg >= 0 && TS_set_foreground)
        {
!         p = tparam (TS_set_foreground, NULL, 0, (int) fg);
          OUTPUT (p);
          xfree (p);
        }
  
        if (bg >= 0 && TS_set_background)
        {
!         p = tparam (TS_set_background, NULL, 0, (int) bg);
          OUTPUT (p);
          xfree (p);
        }
--- 2005,2024 ----
  
        if (fg >= 0 && TS_set_foreground)
        {
!         if (inverse_video || bg == FACE_TTY_DEFAULT_FG_COLOR)
!           p = tparam (TS_set_background, NULL, 0, (int) fg);
!         else
!           p = tparam (TS_set_foreground, NULL, 0, (int) fg);
          OUTPUT (p);
          xfree (p);
        }
  
        if (bg >= 0 && TS_set_background)
        {
!         if (inverse_video || fg == FACE_TTY_DEFAULT_BG_COLOR)
!           p = tparam (TS_set_foreground, NULL, 0, (int) bg);
!         else
!           p = tparam (TS_set_background, NULL, 0, (int) bg);
          OUTPUT (p);
          xfree (p);
        }

-- 
Juri Linkov
http://www.jurta.org/emacs/



_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

Reply via email to