comparison 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
comparison
equal deleted inserted replaced
5221:ac6846067766 5222:18c0b5909d16
42 #include "window.h" 42 #include "window.h"
43 43
44 Lisp_Object Qfacep; 44 Lisp_Object Qfacep;
45 Lisp_Object Qforeground, Qbackground, Qdisplay_table; 45 Lisp_Object Qforeground, Qbackground, Qdisplay_table;
46 Lisp_Object Qbackground_pixmap, Qbackground_placement, Qunderline, Qdim; 46 Lisp_Object Qbackground_pixmap, Qbackground_placement, Qunderline, Qdim;
47 Lisp_Object Qblinking, Qstrikethru; 47 Lisp_Object Qblinking, Qstrikethru, Q_name;
48 48
49 Lisp_Object Qinit_face_from_resources; 49 Lisp_Object Qinit_face_from_resources;
50 Lisp_Object Qinit_frame_faces; 50 Lisp_Object Qinit_frame_faces;
51 Lisp_Object Qinit_device_faces; 51 Lisp_Object Qinit_device_faces;
52 Lisp_Object Qinit_global_faces; 52 Lisp_Object Qinit_global_faces;
130 { 130 {
131 Lisp_Face *face = XFACE (obj); 131 Lisp_Face *face = XFACE (obj);
132 132
133 if (print_readably) 133 if (print_readably)
134 { 134 {
135 write_fmt_string_lisp (printcharfun, "#s(face name %S)", 1, face->name); 135 write_fmt_string_lisp (printcharfun, "#s(face :name %S)", 1, face->name);
136 } 136 }
137 else 137 else
138 { 138 {
139 write_fmt_string_lisp (printcharfun, "#<face %S", 1, face->name); 139 write_fmt_string_lisp (printcharfun, "#<face %S", 1, face->name);
140 if (!NILP (face->doc_string)) 140 if (!NILP (face->doc_string))
340 face_validate (Lisp_Object data, Error_Behavior errb) 340 face_validate (Lisp_Object data, Error_Behavior errb)
341 { 341 {
342 int name_seen = 0; 342 int name_seen = 0;
343 Lisp_Object valw = Qnil; 343 Lisp_Object valw = Qnil;
344 344
345 /* #### This syntax is very limited, given all the face properties that
346 actually exist. At least implement those in reset_face()! */
345 data = Fcdr (data); /* skip over Qface */ 347 data = Fcdr (data); /* skip over Qface */
346 while (!NILP (data)) 348 while (!NILP (data))
347 { 349 {
348 Lisp_Object keyw = Fcar (data); 350 Lisp_Object keyw = Fcar (data);
349 351
350 data = Fcdr (data); 352 data = Fcdr (data);
351 valw = Fcar (data); 353 valw = Fcar (data);
352 data = Fcdr (data); 354 data = Fcdr (data);
353 if (EQ (keyw, Qname)) 355 if (EQ (keyw, Qname) || EQ (keyw, Q_name))
354 name_seen = 1; 356 name_seen = 1;
355 else 357 else
356 ABORT (); 358 ABORT ();
357 } 359 }
358 360
2168 2170
2169 DEFSYMBOL (Qinit_face_from_resources); 2171 DEFSYMBOL (Qinit_face_from_resources);
2170 DEFSYMBOL (Qinit_global_faces); 2172 DEFSYMBOL (Qinit_global_faces);
2171 DEFSYMBOL (Qinit_device_faces); 2173 DEFSYMBOL (Qinit_device_faces);
2172 DEFSYMBOL (Qinit_frame_faces); 2174 DEFSYMBOL (Qinit_frame_faces);
2175
2176 DEFKEYWORD (Q_name);
2173 } 2177 }
2174 2178
2175 void 2179 void
2176 structure_type_create_faces (void) 2180 structure_type_create_faces (void)
2177 { 2181 {
2178 struct structure_type *st; 2182 struct structure_type *st;
2179 2183
2180 st = define_structure_type (Qface, face_validate, face_instantiate); 2184 st = define_structure_type (Qface, face_validate, face_instantiate);
2181 2185 #ifdef NEED_TO_HANDLE_21_4_CODE
2182 define_structure_type_keyword (st, Qname, face_name_validate); 2186 define_structure_type_keyword (st, Qname, face_name_validate);
2187 #endif
2188 define_structure_type_keyword (st, Q_name, face_name_validate);
2183 } 2189 }
2184 2190
2185 void 2191 void
2186 vars_of_faces (void) 2192 vars_of_faces (void)
2187 { 2193 {