comparison src/faces.h @ 5617:b0d712bbc2a6

The "flush" face property. -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2011-12-23 Didier Verna <didier@xemacs.org> * faces.h (struct Lisp_Face): New 'flush slot. * faces.h (struct face_cachel): New 'flush and 'flush_specified flags. * faces.h (WINDOW_FACE_CACHEL_FLUSH_P): * faces.h (FACE_FLUSH_P): New macros. * faces.c: Declare Qflush. * lisp.h: Externalize it. * faces.c (syms_of_faces): Define it. * faces.c (vars_of_faces): Update built-in face specifiers. * faces.c (complex_vars_of_faces): Update specifier fallbacks. * faces.c (mark_face): * faces.c (face_equal): * faces.c (face_getprop): * faces.c (face_putprop): * faces.c (face_remprop): * faces.c (face_plist): * faces.c (reset_face): * faces.c (update_face_inheritance_mapper): * faces.c (Fmake_face): * faces.c (update_face_cachel_data): * faces.c (merge_face_cachel_data): * faces.c (Fcopy_face): * fontcolor.c (face_boolean_validate): Handle the flush property. * redisplay.h (struct display_line): Rename 'default_findex slot to clearer name 'clear_findex. * redisplay.h (DISPLAY_LINE_INIT): Update accordingly. * redisplay-output.c (compare_display_blocks): * redisplay-output.c (output_display_line): * redisplay-output.c (redisplay_output_window): * redisplay.c (regenerate_window_extents_only_changed): * redisplay.c (regenerate_window_incrementally): Update the comparison tests between the current and desired display lines to cope for different 'clear_findex values. * redisplay.c (create_text_block): Initialize the display line's 'clear_findex slot to DEFAULT_INDEX. Record a new 'clear_findex value when we encounter a newline character displayed in a flushed face. * redisplay.c (create_string_text_block): Record a new 'clear_findex value when we encounter a newline character displayed in a flushed face. lisp/ChangeLog addition: 2011-12-23 Didier Verna <didier@xemacs.org> * cl-macs.el (face-flush-p): New defsetf. * faces.el (set-face-property): Document the flush property. * faces.el (face-flush-p): New function. * faces.el (set-face-flush-p): New function. * faces.el (face-equal): * cus-face.el (custom-face-attributes): * x-faces.el (x-init-face-from-resources): * x-faces.el (make-face-x-resource-internal): Handle the flush property.
author Didier Verna <didier@xemacs.org>
date Fri, 23 Dec 2011 10:56:16 +0100
parents 308d34e9f07d
children 75ad4969a16d
comparison
equal deleted inserted replaced
5616:79e9934779c1 5617:b0d712bbc2a6
52 Lisp_Object strikethru; 52 Lisp_Object strikethru;
53 Lisp_Object highlight; 53 Lisp_Object highlight;
54 Lisp_Object dim; 54 Lisp_Object dim;
55 Lisp_Object blinking; 55 Lisp_Object blinking;
56 Lisp_Object reverse; 56 Lisp_Object reverse;
57 Lisp_Object flush;
57 58
58 Lisp_Object plist; 59 Lisp_Object plist;
59 60
60 Lisp_Object charsets_warned_about; 61 Lisp_Object charsets_warned_about;
61 }; 62 };
178 unsigned int strikethru :1; 179 unsigned int strikethru :1;
179 unsigned int highlight :1; 180 unsigned int highlight :1;
180 unsigned int dim :1; 181 unsigned int dim :1;
181 unsigned int blinking :1; 182 unsigned int blinking :1;
182 unsigned int reverse :1; 183 unsigned int reverse :1;
184 unsigned int flush :1;
183 185
184 /* Used when merging to tell if the above field represents an actual 186 /* Used when merging to tell if the above field represents an actual
185 value of this face or a fallback value. */ 187 value of this face or a fallback value. */
186 DECLARE_INLINE_LISP_BIT_VECTOR(NUM_LEADING_BYTES) font_specified; 188 DECLARE_INLINE_LISP_BIT_VECTOR(NUM_LEADING_BYTES) font_specified;
187 189
195 unsigned int underline_specified :1; 197 unsigned int underline_specified :1;
196 unsigned int highlight_specified :1; 198 unsigned int highlight_specified :1;
197 unsigned int dim_specified :1; 199 unsigned int dim_specified :1;
198 unsigned int blinking_specified :1; 200 unsigned int blinking_specified :1;
199 unsigned int reverse_specified :1; 201 unsigned int reverse_specified :1;
202 unsigned int flush_specified :1;
200 203
201 /* The updated flag is set after we calculate the values for the 204 /* The updated flag is set after we calculate the values for the
202 face cachel and cleared whenever a face changes, to indicate 205 face cachel and cleared whenever a face changes, to indicate
203 that the values stored here might be wrong. The next time 206 that the values stored here might be wrong. The next time
204 we go to access the values, we recompute them; if any values 207 we go to access the values, we recompute them; if any values
354 (WINDOW_FACE_CACHEL (window, index)->dim) 357 (WINDOW_FACE_CACHEL (window, index)->dim)
355 #define WINDOW_FACE_CACHEL_BLINKING_P(window, index) \ 358 #define WINDOW_FACE_CACHEL_BLINKING_P(window, index) \
356 (WINDOW_FACE_CACHEL (window, index)->blinking) 359 (WINDOW_FACE_CACHEL (window, index)->blinking)
357 #define WINDOW_FACE_CACHEL_REVERSE_P(window, index) \ 360 #define WINDOW_FACE_CACHEL_REVERSE_P(window, index) \
358 (WINDOW_FACE_CACHEL (window, index)->reverse) 361 (WINDOW_FACE_CACHEL (window, index)->reverse)
362 #define WINDOW_FACE_CACHEL_FLUSH_P(window, index) \
363 (WINDOW_FACE_CACHEL (window, index)->flush)
359 364
360 #define FACE_PROPERTY_SPECIFIER(face, property) Fget (face, property, Qnil) 365 #define FACE_PROPERTY_SPECIFIER(face, property) Fget (face, property, Qnil)
361 366
362 #define FACE_PROPERTY_INSTANCE_1(face, property, domain, errb, no_fallback, depth) \ 367 #define FACE_PROPERTY_INSTANCE_1(face, property, domain, errb, no_fallback, depth) \
363 specifier_instance (FACE_PROPERTY_SPECIFIER (face, property), Qunbound, \ 368 specifier_instance (FACE_PROPERTY_SPECIFIER (face, property), Qunbound, \
415 (!NILP (FACE_PROPERTY_INSTANCE (face, Qdim, domain, 0, Qzero))) 420 (!NILP (FACE_PROPERTY_INSTANCE (face, Qdim, domain, 0, Qzero)))
416 #define FACE_BLINKING_P(face, domain) \ 421 #define FACE_BLINKING_P(face, domain) \
417 (!NILP (FACE_PROPERTY_INSTANCE (face, Qblinking, domain, 0, Qzero))) 422 (!NILP (FACE_PROPERTY_INSTANCE (face, Qblinking, domain, 0, Qzero)))
418 #define FACE_REVERSE_P(face, domain) \ 423 #define FACE_REVERSE_P(face, domain) \
419 (!NILP (FACE_PROPERTY_INSTANCE (face, Qreverse, domain, 0, Qzero))) 424 (!NILP (FACE_PROPERTY_INSTANCE (face, Qreverse, domain, 0, Qzero)))
425 #define FACE_FLUSH_P(face, domain) \
426 (!NILP (FACE_PROPERTY_INSTANCE (face, Qflush, domain, 0, Qzero)))
420 427
421 #endif /* INCLUDED_faces_h_ */ 428 #endif /* INCLUDED_faces_h_ */