summaryrefslogtreecommitdiff
path: root/src/dosfns.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>1999-12-15 13:14:38 +0000
committerEli Zaretskii <eliz@gnu.org>1999-12-15 13:14:38 +0000
commitf9d2fdc464f130fbde700cecc00c031ef7e8e4f2 (patch)
tree2102159b730a603bb26d4e7d5162211d958058d7 /src/dosfns.c
parente19539f184768f9411860daf9ef9d983e48e2650 (diff)
downloademacs-f9d2fdc464f130fbde700cecc00c031ef7e8e4f2.tar.gz
Changes for separate unspecified foreground and background colors
on character terminals: * dispextern.h (FACE_TTY_DEFAULT_FG_COLOR) (FACE_TTY_DEFAULT_BG_COLOR): New macros. * xfaces.c (Qunspecified_fg, Qunspecified_bg): New variables. (syms_of_xfaces): Initialize and staticpro them. (tty_defined_color): If the color name is unspecified-fg or unspecified-bg, return FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR, respectively, as the pixel value. (tty_color_name): If the color pixel value is either FACE_TTY_DEFAULT_FG_COLOR or FACE_TTY_DEFAULT_BG_COLOR, return Qunspecified_fg or Qunspecified_bg, respectively. (Finternal_set_lisp_face_attribute): Allow values Qunspecified_fg and Qunspecified_bg for foreground and background colors. (realize_default_face): If the foreground and background colors are not specified, default to Qunspecified_fg and Qunspecified_bg. (realize_tty_face): By default, set the face colors to FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR. [MSDOS]: Handle FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR when face colors are not defined. Reverse the colors if the default colors were reversed. * dispnew.c (init_display): Initialize the frame pixels of the initial frame to FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR. * term.c (turn_on_face): If the default fore- and background colors are reversed, enter inverse video mode. Don't send color escape sequences for unspecified foreground and background colors. (turn_off_face): Handle unspecified-fg and unspecified-bg colors. * dosfns.c (unspecified_colors): New variable. (msdos_stdcolor_idx): Handle unspecified-fg and unspecified-bg color names, return FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR, respectively. (msdos_stdcolor_name): Handle FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR, return Qunspecified_fg and Qunspecified_bg, respectively. * msdos.c (IT_set_face): Support FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR as pixel values. * faces.el (face-read-integer, read-face-attribute) (color-defined-p, color-values): Allow color values unspecified-fg and unspecified-bg, handle them as unspecified.
Diffstat (limited to 'src/dosfns.c')
-rw-r--r--src/dosfns.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/dosfns.c b/src/dosfns.c
index 857d16bd9b2..feb9080b7c7 100644
--- a/src/dosfns.c
+++ b/src/dosfns.c
@@ -409,6 +409,10 @@ static char *vga_colors[16] = {
"lightred", "lightmagenta", "yellow", "white"
};
+static char *unspecified_colors[] = {
+ "unspecified-fg", "unspecified-bg", "unspecified"
+};
+
/* Given a color name, return its index, or -1 if not found. Note
that this only performs case-insensitive comparison against the
standard names. For anything more sophisticated, like matching
@@ -424,17 +428,25 @@ msdos_stdcolor_idx (const char *name)
if (strcasecmp (name, vga_colors[i]) == 0)
return i;
- return FACE_TTY_DEFAULT_COLOR;
+ return
+ strcmp (name, unspecified_colors[0]) == 0 ? FACE_TTY_DEFAULT_FG_COLOR
+ : strcmp (name, unspecified_colors[1]) == 0 ? FACE_TTY_DEFAULT_BG_COLOR
+ : FACE_TTY_DEFAULT_COLOR;
}
/* Given a color index, return its standard name. */
Lisp_Object
msdos_stdcolor_name (int idx)
{
- extern Lisp_Object Qunspecified;
+ extern Lisp_Object Qunspecified, Qunspecified_fg, Qunspecified_bg;
if (idx < 0 || idx >= sizeof (vga_colors) / sizeof (vga_colors[0]))
- return Qunspecified; /* meaning the default */
+ {
+ return
+ idx == FACE_TTY_DEFAULT_FG_COLOR ? Qunspecified_fg
+ : idx == FACE_TTY_DEFAULT_BG_COLOR ? Qunspecified_bg
+ : Qunspecified; /* meaning the default */
+ }
return build_string (vga_colors[idx]);
}