changeset 31192:4cea72ab1bae

(custom-face-attributes): Add support for :inherit attribute. Add support for relative face heights. (custom-face-attributes-get): Treat `nil' as being a default value for :inherit (as well as `unspecified').
author Miles Bader <miles@gnu.org>
date Sat, 26 Aug 2000 11:47:02 +0000
parents 5275607ad5d0
children a15c5cb8ec71
files lisp/cus-face.el
diffstat 1 files changed, 25 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/cus-face.el	Sat Aug 26 10:59:51 2000 +0000
+++ b/lisp/cus-face.el	Sat Aug 26 11:47:02 2000 +0000
@@ -109,13 +109,14 @@
      (choice :tag "Height"
 	     :help-echo "Face's font height."
 	     (const :tag "*" nil)
-	     (integer :tag "Height in 1/10 pt"))
+	     (integer :tag "Height in 1/10 pt")
+	     (number :tag "Scale" 1.0))
      (lambda (face value &optional frame)
        (set-face-attribute face frame :height (or value 'unspecified)))
      (lambda (face &optional frame)
        (let ((height (face-attribute face :height frame)))
 	 (if (eq height 'unspecified) nil height))))
-    
+
     (:weight
      (choice :tag "Weight"
 	     :help-echo "Font weight."
@@ -278,7 +279,26 @@
        (set-face-attribute face frame :stipple (or value 'unspecified)))
      (lambda (face &optional frame)
        (let ((value (face-attribute face :stipple frame)))
-	 (if (eq value 'unspecified) nil value)))))
+	 (if (eq value 'unspecified) nil value))))
+
+    (:inherit
+     (repeat :tag "Inherit"
+	     :help-echo "List of faces to inherit attributes from."
+	     (face :Tag "Face" default))
+     (lambda (face value &optional frame)
+       (message "Setting to: <%s>" value)
+       (set-face-attribute face frame :inherit
+			   (if (and (consp value) (null (cdr value)))
+			       (car value)
+			     value)))
+     (lambda (face &optional frame)
+       (let ((value (face-attribute face :inherit frame)))
+	 (cond ((or (null value) (eq value 'unspecified))
+		nil)
+	       ((symbolp value)
+		(list value))
+	       (t
+		value))))))
        
   "Alist of face attributes.
 
@@ -307,7 +327,8 @@
       (let* ((attribute (car (car attrs)))
 	     (value (face-attribute face attribute frame)))
 	(setq attrs (cdr attrs))
-	(unless (eq value 'unspecified)
+	(unless (or (eq value 'unspecified)
+		    (and (null value) (memq attribute '(:inherit))))
 	  (setq plist (cons attribute (cons value plist))))))
     plist))