Lisp_Object Qultra_expanded;
Lisp_Object Qreleased_button, Qpressed_button;
Lisp_Object QCstyle, QCcolor, QCline_width;
-Lisp_Object Qunspecified;
+Lisp_Object Qunspecified, Qunspecified_fg, Qunspecified_bg;
/* The symbol `x-charset-registry'. This property of charsets defines
the X registry and encoding that fonts should have that are used to
load color" messages in the *Messages* buffer. */
status = 1;
}
+ if (color_idx == FACE_TTY_DEFAULT_COLOR && *color_name)
+ {
+ if (strcmp (color_name, "unspecified-fg") == 0)
+ color_idx = FACE_TTY_DEFAULT_FG_COLOR;
+ else if (strcmp (color_name, "unspecified-bg") == 0)
+ color_idx = FACE_TTY_DEFAULT_BG_COLOR;
+ }
+
color_def->pixel = (unsigned long) color_idx;
color_def->red = red;
color_def->green = green;
by index using the default color mapping on a Windows console. */
#endif
- return Qunspecified;
+ return
+ idx == FACE_TTY_DEFAULT_FG_COLOR ? Qunspecified_fg
+ : idx == FACE_TTY_DEFAULT_BG_COLOR ? Qunspecified_bg
+ : Qunspecified;
}
/* Return non-zero if COLOR_NAME is a shade of gray (or white or
}
else if (EQ (attr, QCforeground))
{
- if (!UNSPECIFIEDP (value))
+ if (!UNSPECIFIEDP (value)
+ && !EQ (value, Qunspecified_fg) && !EQ (value, Qunspecified_bg))
{
/* Don't check for valid color names here because it depends
on the frame (display) whether the color will be valid
}
else if (EQ (attr, QCbackground))
{
- if (!UNSPECIFIEDP (value))
+ if (!UNSPECIFIEDP (value)
+ && !EQ (value, Qunspecified_bg) && !EQ (value, Qunspecified_fg))
{
/* Don't check for valid color names here because it depends
on the frame (display) whether the color will be valid
LFACE_FOREGROUND (lface) = XCDR (color);
else if (FRAME_X_P (f))
return 0;
- else if (!FRAME_TERMCAP_P (f) && !FRAME_MSDOS_P (f))
+ else if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
+ LFACE_FOREGROUND (lface) = Qunspecified_fg;
+ else
abort ();
}
LFACE_BACKGROUND (lface) = XCDR (color);
else if (FRAME_X_P (f))
return 0;
- else if (!FRAME_TERMCAP_P (f) && !FRAME_MSDOS_P (f))
+ else if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
+ LFACE_BACKGROUND (lface) = Qunspecified_bg;
+ else
abort ();
}
face->tty_reverse_p = 1;
/* Map color names to color indices. */
- face->foreground = face->background = FACE_TTY_DEFAULT_COLOR;
+ face->foreground = FACE_TTY_DEFAULT_FG_COLOR;
+ face->background = FACE_TTY_DEFAULT_BG_COLOR;
color = attrs[LFACE_FOREGROUND_INDEX];
if (STRINGP (color)
(NAME INDEX R G B). We need the INDEX part. */
face->foreground = XINT (XCAR (XCDR (color)));
- if (face->foreground == FACE_TTY_DEFAULT_COLOR
+ if (face->foreground == FACE_TTY_DEFAULT_FG_COLOR
&& STRINGP (attrs[LFACE_FOREGROUND_INDEX]))
{
face->foreground = load_color (c->f, face,
#ifdef MSDOS
/* If the foreground of the default face is the default color,
use the foreground color defined by the frame. */
- if (FRAME_MSDOS_P (c->f) && face->foreground == FACE_TTY_DEFAULT_COLOR)
+ if (FRAME_MSDOS_P (c->f))
{
- face->foreground = FRAME_FOREGROUND_PIXEL (f);
- attrs[LFACE_FOREGROUND_INDEX] =
- msdos_stdcolor_name (face->foreground);
- face_colors_defaulted = 1;
+ if (face->foreground == FACE_TTY_DEFAULT_FG_COLOR
+ || face->foreground == FACE_TTY_DEFAULT_COLOR)
+ {
+ face->foreground = FRAME_FOREGROUND_PIXEL (f);
+ attrs[LFACE_FOREGROUND_INDEX] =
+ msdos_stdcolor_name (face->foreground);
+ face_colors_defaulted = 1;
+ }
+ else if (face->foreground == FACE_TTY_DEFAULT_BG_COLOR)
+ {
+ face->foreground = FRAME_BACKGROUND_PIXEL (f);
+ attrs[LFACE_FOREGROUND_INDEX] =
+ msdos_stdcolor_name (face->foreground);
+ face_colors_defaulted = 1;
+ }
}
#endif
}
(NAME INDEX R G B). We need the INDEX part. */
face->background = XINT (XCAR (XCDR (color)));
- if (face->background == FACE_TTY_DEFAULT_COLOR
+ if (face->background == FACE_TTY_DEFAULT_BG_COLOR
&& STRINGP (attrs[LFACE_BACKGROUND_INDEX]))
{
face->background = load_color (c->f, face,
#ifdef MSDOS
/* If the background of the default face is the default color,
use the background color defined by the frame. */
- if (FRAME_MSDOS_P (c->f) && face->background == FACE_TTY_DEFAULT_COLOR)
+ if (FRAME_MSDOS_P (c->f))
{
- face->background = FRAME_BACKGROUND_PIXEL (f);
- attrs[LFACE_BACKGROUND_INDEX] =
- msdos_stdcolor_name (face->background);
- face_colors_defaulted = 1;
+ if (face->background == FACE_TTY_DEFAULT_BG_COLOR
+ || face->background == FACE_TTY_DEFAULT_COLOR)
+ {
+ face->background = FRAME_BACKGROUND_PIXEL (f);
+ attrs[LFACE_BACKGROUND_INDEX] =
+ msdos_stdcolor_name (face->background);
+ face_colors_defaulted = 1;
+ }
+ else if (face->background == FACE_TTY_DEFAULT_FG_COLOR)
+ {
+ face->background = FRAME_FOREGROUND_PIXEL (f);
+ attrs[LFACE_BACKGROUND_INDEX] =
+ msdos_stdcolor_name (face->background);
+ face_colors_defaulted = 1;
+ }
}
#endif
}
staticpro (&Qforeground_color);
Qunspecified = intern ("unspecified");
staticpro (&Qunspecified);
+ Qunspecified_fg = intern ("unspecified-fg");
+ staticpro (&Qunspecified_fg);
+ Qunspecified_bg = intern ("unspecified-bg");
+ staticpro (&Qunspecified_bg);
Qx_charset_registry = intern ("x-charset-registry");
staticpro (&Qx_charset_registry);