]> git.eshelyaron.com Git - emacs.git/commitdiff
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-368
authorMiles Bader <miles@gnu.org>
Fri, 4 Jun 2004 02:50:11 +0000 (02:50 +0000)
committerMiles Bader <miles@gnu.org>
Fri, 4 Jun 2004 02:50:11 +0000 (02:50 +0000)
Improve display-supports-face-attributes-p on non-ttys

lisp/ChangeLog
lisp/faces.el

index a25bda7392f692ad391e26ab9226bad32eb2aa29..c4f861626fde7346ae4760f323796433db00c605 100644 (file)
@@ -1,3 +1,8 @@
+2004-06-04  Miles Bader  <miles@gnu.org>
+
+       * faces.el (display-supports-face-attributes-p): Implement a
+       `different from default' check for non-tty displays.
+
 2004-06-03  David Kastrup  <dak@gnu.org>
 
        * woman.el (woman-mapcan): More concise code.
index 05a4fd7e82c9e400311be10127bd3f4a550ef254..03e2ee699e7682245b9a561a1c8b82bfdda23644 100644 (file)
@@ -1510,11 +1510,25 @@ face for italic."
         (if (framep display)
             display
           (car (frames-on-display-list display)))))
-    ;; For now, we assume that non-tty displays can support everything.
-    ;; Later, we should add the ability to query about specific fonts,
-    ;; colors, etc.
-    (or (memq (framep frame) '(x w32 mac))
-       (tty-supports-face-attributes-p attributes frame))))
+    (if (not (memq (framep frame) '(x w32 mac)))
+       ;; On ttys, `tty-supports-face-attributes-p' does all the work we need.
+       (tty-supports-face-attributes-p attributes frame)
+      ;; For now, we assume that non-tty displays can support everything,
+      ;; and so we just check to see if any of the specified attributes is
+      ;; different from the default -- though this probably isn't always
+      ;; accurate for font-related attributes.  Later, we should add the
+      ;; ability to query about specific fonts, colors, etc.
+      (while (and attributes
+                 (let* ((attr (car attributes))
+                        (val (cadr attributes))
+                        (default-val (face-attribute 'default attr frame)))
+                   (if (and (stringp val) (stringp default-val))
+                       ;; compare string attributes case-insensitively
+                       (eq (compare-strings val nil nil default-val nil nil t)
+                           t)
+                     (equal val default-val))))
+       (setq attributes (cddr attributes)))
+      (not (null attributes)))))
 
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;