comparison lisp/faces.el @ 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 79a1a759ec3d
children 75ad4969a16d
comparison
equal deleted inserted replaced
5616:79e9934779c1 5617:b0d712bbc2a6
359 359
360 reverse Reverse the foreground and background colors. 360 reverse Reverse the foreground and background colors.
361 Only used by faces on TTY devices. 361 Only used by faces on TTY devices.
362 For valid instantiators, see `make-face-boolean-specifier'. 362 For valid instantiators, see `make-face-boolean-specifier'.
363 363
364 flush When the end of line is reached in a flushing face, also
365 paint the rest of the line (up to the right border) with
366 that face. The effect will only be visible if the face has
367 a non default background.
368 For valid instantiators, see `make-face-boolean-specifier'.
369
364 inherit Face name or face object from which to inherit attributes, 370 inherit Face name or face object from which to inherit attributes,
365 or a list of such elements. Attributes from inherited 371 or a list of such elements. Attributes from inherited
366 faces are merged into the face like an underlying face 372 faces are merged into the face like an underlying face
367 would be, with higher priority than underlying faces. 373 would be, with higher priority than underlying faces.
368 374
895 See `set-face-property' for the semantics of the LOCALE, TAG-SET, and 901 See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
896 HOW-TO-ADD arguments." 902 HOW-TO-ADD arguments."
897 (interactive (face-interactive "reverse-p" "reversed")) 903 (interactive (face-interactive "reverse-p" "reversed"))
898 (set-face-property face 'reverse reverse-p locale tag-set how-to-add)) 904 (set-face-property face 'reverse reverse-p locale tag-set how-to-add))
899 905
906 (defun face-flush-p (face &optional domain default no-fallback)
907 "Return t if FACE is flushed in DOMAIN.
908 See `face-property-instance' for the semantics of the DOMAIN argument."
909 (face-property-instance face 'flush domain default no-fallback))
910
911 (defun set-face-flush-p (face flush-p &optional locale tag-set how-to-add)
912 "Change whether FACE is flushed in LOCALE.
913 FLUSH-P is normally a face-boolean instantiator; see
914 `make-face-boolean-specifier'.
915 See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
916 HOW-TO-ADD arguments."
917 (interactive (face-interactive "flush-p" "flushed"))
918 (set-face-property face 'flush flush-p locale tag-set how-to-add))
919
900 920
901 (defun face-property-equal (face1 face2 prop domain) 921 (defun face-property-equal (face1 face2 prop domain)
902 (equal (face-property-instance face1 prop domain) 922 (equal (face-property-instance face1 prop domain)
903 (face-property-instance face2 prop domain))) 923 (face-property-instance face2 prop domain)))
904 924
914 (if (null domain) (setq domain (selected-window))) 934 (if (null domain) (setq domain (selected-window)))
915 (if (not (valid-specifier-domain-p domain)) 935 (if (not (valid-specifier-domain-p domain))
916 (error "Invalid specifier domain")) 936 (error "Invalid specifier domain"))
917 (let ((device (dfw-device domain)) 937 (let ((device (dfw-device domain))
918 (common-props '(foreground background font display-table underline 938 (common-props '(foreground background font display-table underline
919 dim inherit)) 939 dim inherit flush))
920 (win-props '(background-pixmap background-placement strikethru)) 940 (win-props '(background-pixmap background-placement strikethru))
921 (tty-props '(highlight blinking reverse))) 941 (tty-props '(highlight blinking reverse)))
922 942
923 ;; First check the properties which are used in common between the 943 ;; First check the properties which are used in common between the
924 ;; x and tty devices. Then, check those properties specific to 944 ;; x and tty devices. Then, check those properties specific to