/[emacs]/emacs/src/xfaces.c
ViewVC logotype

Diff of /emacs/src/xfaces.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.338 by mituharu, Sat Oct 8 02:28:55 2005 UTC revision 1.339 by cyd, Fri Nov 18 01:48:42 2005 UTC
# Line 274  Boston, MA 02110-1301, USA.  */ Line 274  Boston, MA 02110-1301, USA.  */
274    
275  #define UNSPECIFIEDP(ATTR) EQ ((ATTR), Qunspecified)  #define UNSPECIFIEDP(ATTR) EQ ((ATTR), Qunspecified)
276    
277    /* Non-zero if face attribute ATTR is `ignore-defface'.  */
278    
279    #define IGNORE_DEFFACE_P(ATTR) EQ ((ATTR), Qignore_defface)
280    
281  /* Value is the number of elements of VECTOR.  */  /* Value is the number of elements of VECTOR.  */
282    
283  #define DIM(VECTOR) (sizeof (VECTOR) / sizeof *(VECTOR))  #define DIM(VECTOR) (sizeof (VECTOR) / sizeof *(VECTOR))
# Line 312  Lisp_Object Qultra_expanded; Line 316  Lisp_Object Qultra_expanded;
316  Lisp_Object Qreleased_button, Qpressed_button;  Lisp_Object Qreleased_button, Qpressed_button;
317  Lisp_Object QCstyle, QCcolor, QCline_width;  Lisp_Object QCstyle, QCcolor, QCline_width;
318  Lisp_Object Qunspecified;  Lisp_Object Qunspecified;
319    Lisp_Object Qignore_defface;
320    
321  char unspecified_fg[] = "unspecified-fg", unspecified_bg[] = "unspecified-bg";  char unspecified_fg[] = "unspecified-fg", unspecified_bg[] = "unspecified-bg";
322    
# Line 3104  check_lface_attrs (attrs) Line 3109  check_lface_attrs (attrs)
3109       Lisp_Object *attrs;       Lisp_Object *attrs;
3110  {  {
3111    xassert (UNSPECIFIEDP (attrs[LFACE_FAMILY_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_FAMILY_INDEX])
3112               || IGNORE_DEFFACE_P (attrs[LFACE_FAMILY_INDEX])
3113             || STRINGP (attrs[LFACE_FAMILY_INDEX]));             || STRINGP (attrs[LFACE_FAMILY_INDEX]));
3114    xassert (UNSPECIFIEDP (attrs[LFACE_SWIDTH_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_SWIDTH_INDEX])
3115               || IGNORE_DEFFACE_P (attrs[LFACE_SWIDTH_INDEX])
3116             || SYMBOLP (attrs[LFACE_SWIDTH_INDEX]));             || SYMBOLP (attrs[LFACE_SWIDTH_INDEX]));
3117    xassert (UNSPECIFIEDP (attrs[LFACE_AVGWIDTH_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_AVGWIDTH_INDEX])
3118               || IGNORE_DEFFACE_P (attrs[LFACE_AVGWIDTH_INDEX])
3119             || INTEGERP (attrs[LFACE_AVGWIDTH_INDEX]));             || INTEGERP (attrs[LFACE_AVGWIDTH_INDEX]));
3120    xassert (UNSPECIFIEDP (attrs[LFACE_HEIGHT_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_HEIGHT_INDEX])
3121               || IGNORE_DEFFACE_P (attrs[LFACE_HEIGHT_INDEX])
3122             || INTEGERP (attrs[LFACE_HEIGHT_INDEX])             || INTEGERP (attrs[LFACE_HEIGHT_INDEX])
3123             || FLOATP (attrs[LFACE_HEIGHT_INDEX])             || FLOATP (attrs[LFACE_HEIGHT_INDEX])
3124             || FUNCTIONP (attrs[LFACE_HEIGHT_INDEX]));             || FUNCTIONP (attrs[LFACE_HEIGHT_INDEX]));
3125    xassert (UNSPECIFIEDP (attrs[LFACE_WEIGHT_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_WEIGHT_INDEX])
3126               || IGNORE_DEFFACE_P (attrs[LFACE_WEIGHT_INDEX])
3127             || SYMBOLP (attrs[LFACE_WEIGHT_INDEX]));             || SYMBOLP (attrs[LFACE_WEIGHT_INDEX]));
3128    xassert (UNSPECIFIEDP (attrs[LFACE_SLANT_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_SLANT_INDEX])
3129               || IGNORE_DEFFACE_P (attrs[LFACE_SLANT_INDEX])
3130             || SYMBOLP (attrs[LFACE_SLANT_INDEX]));             || SYMBOLP (attrs[LFACE_SLANT_INDEX]));
3131    xassert (UNSPECIFIEDP (attrs[LFACE_UNDERLINE_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_UNDERLINE_INDEX])
3132               || IGNORE_DEFFACE_P (attrs[LFACE_UNDERLINE_INDEX])
3133             || SYMBOLP (attrs[LFACE_UNDERLINE_INDEX])             || SYMBOLP (attrs[LFACE_UNDERLINE_INDEX])
3134             || STRINGP (attrs[LFACE_UNDERLINE_INDEX]));             || STRINGP (attrs[LFACE_UNDERLINE_INDEX]));
3135    xassert (UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX])
3136               || IGNORE_DEFFACE_P (attrs[LFACE_OVERLINE_INDEX])
3137             || SYMBOLP (attrs[LFACE_OVERLINE_INDEX])             || SYMBOLP (attrs[LFACE_OVERLINE_INDEX])
3138             || STRINGP (attrs[LFACE_OVERLINE_INDEX]));             || STRINGP (attrs[LFACE_OVERLINE_INDEX]));
3139    xassert (UNSPECIFIEDP (attrs[LFACE_STRIKE_THROUGH_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_STRIKE_THROUGH_INDEX])
3140               || IGNORE_DEFFACE_P (attrs[LFACE_STRIKE_THROUGH_INDEX])
3141             || SYMBOLP (attrs[LFACE_STRIKE_THROUGH_INDEX])             || SYMBOLP (attrs[LFACE_STRIKE_THROUGH_INDEX])
3142             || STRINGP (attrs[LFACE_STRIKE_THROUGH_INDEX]));             || STRINGP (attrs[LFACE_STRIKE_THROUGH_INDEX]));
3143    xassert (UNSPECIFIEDP (attrs[LFACE_BOX_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_BOX_INDEX])
3144               || IGNORE_DEFFACE_P (attrs[LFACE_BOX_INDEX])
3145             || SYMBOLP (attrs[LFACE_BOX_INDEX])             || SYMBOLP (attrs[LFACE_BOX_INDEX])
3146             || STRINGP (attrs[LFACE_BOX_INDEX])             || STRINGP (attrs[LFACE_BOX_INDEX])
3147             || INTEGERP (attrs[LFACE_BOX_INDEX])             || INTEGERP (attrs[LFACE_BOX_INDEX])
3148             || CONSP (attrs[LFACE_BOX_INDEX]));             || CONSP (attrs[LFACE_BOX_INDEX]));
3149    xassert (UNSPECIFIEDP (attrs[LFACE_INVERSE_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_INVERSE_INDEX])
3150               || IGNORE_DEFFACE_P (attrs[LFACE_INVERSE_INDEX])
3151             || SYMBOLP (attrs[LFACE_INVERSE_INDEX]));             || SYMBOLP (attrs[LFACE_INVERSE_INDEX]));
3152    xassert (UNSPECIFIEDP (attrs[LFACE_FOREGROUND_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_FOREGROUND_INDEX])
3153               || IGNORE_DEFFACE_P (attrs[LFACE_FOREGROUND_INDEX])
3154             || STRINGP (attrs[LFACE_FOREGROUND_INDEX]));             || STRINGP (attrs[LFACE_FOREGROUND_INDEX]));
3155    xassert (UNSPECIFIEDP (attrs[LFACE_BACKGROUND_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_BACKGROUND_INDEX])
3156               || IGNORE_DEFFACE_P (attrs[LFACE_BACKGROUND_INDEX])
3157             || STRINGP (attrs[LFACE_BACKGROUND_INDEX]));             || STRINGP (attrs[LFACE_BACKGROUND_INDEX]));
3158    xassert (UNSPECIFIEDP (attrs[LFACE_INHERIT_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_INHERIT_INDEX])
3159               || IGNORE_DEFFACE_P (attrs[LFACE_INHERIT_INDEX])
3160             || NILP (attrs[LFACE_INHERIT_INDEX])             || NILP (attrs[LFACE_INHERIT_INDEX])
3161             || SYMBOLP (attrs[LFACE_INHERIT_INDEX])             || SYMBOLP (attrs[LFACE_INHERIT_INDEX])
3162             || CONSP (attrs[LFACE_INHERIT_INDEX]));             || CONSP (attrs[LFACE_INHERIT_INDEX]));
3163  #ifdef HAVE_WINDOW_SYSTEM  #ifdef HAVE_WINDOW_SYSTEM
3164    xassert (UNSPECIFIEDP (attrs[LFACE_STIPPLE_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_STIPPLE_INDEX])
3165               || IGNORE_DEFFACE_P (attrs[LFACE_STIPPLE_INDEX])
3166             || SYMBOLP (attrs[LFACE_STIPPLE_INDEX])             || SYMBOLP (attrs[LFACE_STIPPLE_INDEX])
3167             || !NILP (Fbitmap_spec_p (attrs[LFACE_STIPPLE_INDEX])));             || !NILP (Fbitmap_spec_p (attrs[LFACE_STIPPLE_INDEX])));
3168    xassert (UNSPECIFIEDP (attrs[LFACE_FONT_INDEX])    xassert (UNSPECIFIEDP (attrs[LFACE_FONT_INDEX])
3169               || IGNORE_DEFFACE_P (attrs[LFACE_FONT_INDEX])
3170             || NILP (attrs[LFACE_FONT_INDEX])             || NILP (attrs[LFACE_FONT_INDEX])
3171             || STRINGP (attrs[LFACE_FONT_INDEX]));             || STRINGP (attrs[LFACE_FONT_INDEX]));
3172  #endif  #endif
# Line 3340  lface_fully_specified_p (attrs) Line 3361  lface_fully_specified_p (attrs)
3361    for (i = 1; i < LFACE_VECTOR_SIZE; ++i)    for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
3362      if (i != LFACE_FONT_INDEX && i != LFACE_INHERIT_INDEX      if (i != LFACE_FONT_INDEX && i != LFACE_INHERIT_INDEX
3363          && i != LFACE_AVGWIDTH_INDEX)          && i != LFACE_AVGWIDTH_INDEX)
3364        if (UNSPECIFIEDP (attrs[i])        if ((UNSPECIFIEDP (attrs[i]) || IGNORE_DEFFACE_P (attrs[i]))
3365  #ifdef MAC_OS  #ifdef MAC_OS
3366          /* MAC_TODO: No stipple support on Mac OS yet, this index is          /* MAC_TODO: No stipple support on Mac OS yet, this index is
3367             always unspecified.  */             always unspecified.  */
# Line 3555  merge_face_vectors (f, from, to, named_m Line 3576  merge_face_vectors (f, from, to, named_m
3576        {        {
3577          if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i]))          if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i]))
3578            to[i] = merge_face_heights (from[i], to[i], to[i]);            to[i] = merge_face_heights (from[i], to[i], to[i]);
3579            else if (IGNORE_DEFFACE_P (from[i]))
3580              to[i] = Qunspecified;
3581          else          else
3582            to[i] = from[i];            to[i] = from[i];
3583        }        }
# Line 4047  FRAME 0 means change the face on all fra Line 4070  FRAME 0 means change the face on all fra
4070    
4071    if (EQ (attr, QCfamily))    if (EQ (attr, QCfamily))
4072      {      {
4073        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4074          {          {
4075            CHECK_STRING (value);            CHECK_STRING (value);
4076            if (SCHARS (value) == 0)            if (SCHARS (value) == 0)
# Line 4059  FRAME 0 means change the face on all fra Line 4082  FRAME 0 means change the face on all fra
4082      }      }
4083    else if (EQ (attr, QCheight))    else if (EQ (attr, QCheight))
4084      {      {
4085        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4086          {          {
4087            Lisp_Object test;            Lisp_Object test;
4088    
# Line 4080  FRAME 0 means change the face on all fra Line 4103  FRAME 0 means change the face on all fra
4103      }      }
4104    else if (EQ (attr, QCweight))    else if (EQ (attr, QCweight))
4105      {      {
4106        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4107          {          {
4108            CHECK_SYMBOL (value);            CHECK_SYMBOL (value);
4109            if (face_numeric_weight (value) < 0)            if (face_numeric_weight (value) < 0)
# Line 4092  FRAME 0 means change the face on all fra Line 4115  FRAME 0 means change the face on all fra
4115      }      }
4116    else if (EQ (attr, QCslant))    else if (EQ (attr, QCslant))
4117      {      {
4118        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4119          {          {
4120            CHECK_SYMBOL (value);            CHECK_SYMBOL (value);
4121            if (face_numeric_slant (value) < 0)            if (face_numeric_slant (value) < 0)
# Line 4104  FRAME 0 means change the face on all fra Line 4127  FRAME 0 means change the face on all fra
4127      }      }
4128    else if (EQ (attr, QCunderline))    else if (EQ (attr, QCunderline))
4129      {      {
4130        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4131          if ((SYMBOLP (value)          if ((SYMBOLP (value)
4132               && !EQ (value, Qt)               && !EQ (value, Qt)
4133               && !EQ (value, Qnil))               && !EQ (value, Qnil))
# Line 4118  FRAME 0 means change the face on all fra Line 4141  FRAME 0 means change the face on all fra
4141      }      }
4142    else if (EQ (attr, QCoverline))    else if (EQ (attr, QCoverline))
4143      {      {
4144        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4145          if ((SYMBOLP (value)          if ((SYMBOLP (value)
4146               && !EQ (value, Qt)               && !EQ (value, Qt)
4147               && !EQ (value, Qnil))               && !EQ (value, Qnil))
# Line 4132  FRAME 0 means change the face on all fra Line 4155  FRAME 0 means change the face on all fra
4155      }      }
4156    else if (EQ (attr, QCstrike_through))    else if (EQ (attr, QCstrike_through))
4157      {      {
4158        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4159          if ((SYMBOLP (value)          if ((SYMBOLP (value)
4160               && !EQ (value, Qt)               && !EQ (value, Qt)
4161               && !EQ (value, Qnil))               && !EQ (value, Qnil))
# Line 4153  FRAME 0 means change the face on all fra Line 4176  FRAME 0 means change the face on all fra
4176        if (EQ (value, Qt))        if (EQ (value, Qt))
4177          value = make_number (1);          value = make_number (1);
4178    
4179        if (UNSPECIFIEDP (value))        if (UNSPECIFIEDP (value) || IGNORE_DEFFACE_P (value))
4180          valid_p = 1;          valid_p = 1;
4181        else if (NILP (value))        else if (NILP (value))
4182          valid_p = 1;          valid_p = 1;
# Line 4210  FRAME 0 means change the face on all fra Line 4233  FRAME 0 means change the face on all fra
4233    else if (EQ (attr, QCinverse_video)    else if (EQ (attr, QCinverse_video)
4234             || EQ (attr, QCreverse_video))             || EQ (attr, QCreverse_video))
4235      {      {
4236        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4237          {          {
4238            CHECK_SYMBOL (value);            CHECK_SYMBOL (value);
4239            if (!EQ (value, Qt) && !NILP (value))            if (!EQ (value, Qt) && !NILP (value))
# Line 4221  FRAME 0 means change the face on all fra Line 4244  FRAME 0 means change the face on all fra
4244      }      }
4245    else if (EQ (attr, QCforeground))    else if (EQ (attr, QCforeground))
4246      {      {
4247        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4248          {          {
4249            /* Don't check for valid color names here because it depends            /* Don't check for valid color names here because it depends
4250               on the frame (display) whether the color will be valid               on the frame (display) whether the color will be valid
# Line 4235  FRAME 0 means change the face on all fra Line 4258  FRAME 0 means change the face on all fra
4258      }      }
4259    else if (EQ (attr, QCbackground))    else if (EQ (attr, QCbackground))
4260      {      {
4261        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4262          {          {
4263            /* Don't check for valid color names here because it depends            /* Don't check for valid color names here because it depends
4264               on the frame (display) whether the color will be valid               on the frame (display) whether the color will be valid
# Line 4250  FRAME 0 means change the face on all fra Line 4273  FRAME 0 means change the face on all fra
4273    else if (EQ (attr, QCstipple))    else if (EQ (attr, QCstipple))
4274      {      {
4275  #ifdef HAVE_X_WINDOWS  #ifdef HAVE_X_WINDOWS
4276        if (!UNSPECIFIEDP (value)        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value)
4277            && !NILP (value)            && !NILP (value)
4278            && NILP (Fbitmap_spec_p (value)))            && NILP (Fbitmap_spec_p (value)))
4279          signal_error ("Invalid stipple attribute", value);          signal_error ("Invalid stipple attribute", value);
# Line 4260  FRAME 0 means change the face on all fra Line 4283  FRAME 0 means change the face on all fra
4283      }      }
4284    else if (EQ (attr, QCwidth))    else if (EQ (attr, QCwidth))
4285      {      {
4286        if (!UNSPECIFIEDP (value))        if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4287          {          {
4288            CHECK_SYMBOL (value);            CHECK_SYMBOL (value);
4289            if (face_numeric_swidth (value) < 0)            if (face_numeric_swidth (value) < 0)
# Line 4285  FRAME 0 means change the face on all fra Line 4308  FRAME 0 means change the face on all fra
4308            else            else
4309              f = check_x_frame (frame);              f = check_x_frame (frame);
4310    
4311            if (!UNSPECIFIEDP (value))            if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4312              {              {
4313                CHECK_STRING (value);                CHECK_STRING (value);
4314    
# Line 4333  FRAME 0 means change the face on all fra Line 4356  FRAME 0 means change the face on all fra
4356      signal_error ("Invalid face attribute name", attr);      signal_error ("Invalid face attribute name", attr);
4357    
4358    if (font_related_attr_p    if (font_related_attr_p
4359        && !UNSPECIFIEDP (value))        && !UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4360      /* If a font-related attribute other than QCfont is specified, the      /* If a font-related attribute other than QCfont is specified, the
4361         original `font' attribute nor that of default face is useless         original `font' attribute nor that of default face is useless
4362         to determine a new font.  Thus, we set it to nil so that font         to determine a new font.  Thus, we set it to nil so that font
# Line 4354  FRAME 0 means change the face on all fra Line 4377  FRAME 0 means change the face on all fra
4377        ++windows_or_buffers_changed;        ++windows_or_buffers_changed;
4378      }      }
4379    
4380    if (!UNSPECIFIEDP (value)    if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value)
4381        && NILP (Fequal (old_value, value)))        && NILP (Fequal (old_value, value)))
4382      {      {
4383        Lisp_Object param;        Lisp_Object param;
# Line 8012  syms_of_xfaces () Line 8035  syms_of_xfaces ()
8035    staticpro (&Qforeground_color);    staticpro (&Qforeground_color);
8036    Qunspecified = intern ("unspecified");    Qunspecified = intern ("unspecified");
8037    staticpro (&Qunspecified);    staticpro (&Qunspecified);
8038      Qignore_defface = intern (":ignore-defface");
8039      staticpro (&Qignore_defface);
8040    
8041    Qface_alias = intern ("face-alias");    Qface_alias = intern ("face-alias");
8042    staticpro (&Qface_alias);    staticpro (&Qface_alias);

Legend:
Removed from v.1.338  
changed lines
  Added in v.1.339

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26