Mercurial > hg > xemacs-beta
diff src/faces.c @ 5222:18c0b5909d16
Use keywords in structure syntax; new #define, NEED_TO_HANDLE_21_4_CODE 1
src/ChangeLog addition:
2010-05-31 Aidan Kehoe <kehoea@parhasard.net>
* rangetab.c (print_range_table, rangetab_instantiate)
(structure_type_create_rangetab):
* chartab.c (print_char_table, chartab_instantiate)
(structure_type_create_chartab):
* faces.c (syms_of_faces, print_face, face_validate):
Move structure syntax in these files to using keywords by default,
as is done in Common Lisp and GNU Emacs, accepting for the moment
the older non-keywords syntax too.
* glyphs.h: No need to have Q_data here.
* general-slots.h: Add Q_data, Q_type here.
* config.h.in (NEED_TO_HANDLE_21_4_CODE):
New #define, always 1 for the moment, replacing the previous
never-really-used NO_NEED_TO_HANDLE_21_4_CODE, and avoiding
confusing syntax.
* eval.c (Ffuncall): Wrap the hack that allows #'throw to be
funcalled in #ifdef NEED_TO_HANDLE_21_4_CODE.
* elhash.c (syms_of_elhash): Move Q_type, Q_data to
general-slots.h. Change to NEED_TO_HANDLE_21_4_CODE throughout
this file.
lisp/ChangeLog addition:
2010-05-31 Aidan Kehoe <kehoea@parhasard.net>
* specifier.el (current-display-table):
Use keywords in the structure syntax here, now we've moved to that
by default in C.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Mon, 31 May 2010 16:47:44 +0100 |
parents | 71ee43b8a74d |
children | 22c4e67a2e69 308d34e9f07d |
line wrap: on
line diff
--- a/src/faces.c Sun May 30 15:16:07 2010 +0100 +++ b/src/faces.c Mon May 31 16:47:44 2010 +0100 @@ -44,7 +44,7 @@ Lisp_Object Qfacep; Lisp_Object Qforeground, Qbackground, Qdisplay_table; Lisp_Object Qbackground_pixmap, Qbackground_placement, Qunderline, Qdim; -Lisp_Object Qblinking, Qstrikethru; +Lisp_Object Qblinking, Qstrikethru, Q_name; Lisp_Object Qinit_face_from_resources; Lisp_Object Qinit_frame_faces; @@ -132,7 +132,7 @@ if (print_readably) { - write_fmt_string_lisp (printcharfun, "#s(face name %S)", 1, face->name); + write_fmt_string_lisp (printcharfun, "#s(face :name %S)", 1, face->name); } else { @@ -342,6 +342,8 @@ int name_seen = 0; Lisp_Object valw = Qnil; + /* #### This syntax is very limited, given all the face properties that + actually exist. At least implement those in reset_face()! */ data = Fcdr (data); /* skip over Qface */ while (!NILP (data)) { @@ -350,7 +352,7 @@ data = Fcdr (data); valw = Fcar (data); data = Fcdr (data); - if (EQ (keyw, Qname)) + if (EQ (keyw, Qname) || EQ (keyw, Q_name)) name_seen = 1; else ABORT (); @@ -2170,6 +2172,8 @@ DEFSYMBOL (Qinit_global_faces); DEFSYMBOL (Qinit_device_faces); DEFSYMBOL (Qinit_frame_faces); + + DEFKEYWORD (Q_name); } void @@ -2178,8 +2182,10 @@ struct structure_type *st; st = define_structure_type (Qface, face_validate, face_instantiate); - +#ifdef NEED_TO_HANDLE_21_4_CODE define_structure_type_keyword (st, Qname, face_name_validate); +#endif + define_structure_type_keyword (st, Q_name, face_name_validate); } void