Hi Jan,
Your patch (pasted below) sends XEmacs/cygwin into an infinite loop when I
do M-x customize-variable. This seems worse than it was before :) Let me
know if you can fix it or I will have to back it out of the windows branch.
Thanks
andy
--- lisp/faces.el 23 Oct 2001 08:35:21 -0000 1.23.2.1
+++ lisp/faces.el 1 Dec 2001 05:54:17 -0000 1.23.2.1.2.3
@@ -847,10 +847,21 @@
(setq temp-sp (copy-specifier sp))
- (if (and (or (eq locale 'global) (eq locale 'all) (not locale))
- (not (face-property face property 'global)))
- (copy-specifier (face-property 'default property)
- temp-sp 'global))
+ (if (or (eq locale 'global) (eq locale 'all) (not locale))
+ (while (not (specifier-specs temp-sp 'global))
+ ;; Try fallback via the official ways and then do it "by hand"
+ (let* ((fallback (specifier-fallback sp))
+ (fallback-sp
+ (cond ((specifierp fallback) fallback)
+ ;; just an inst list
+ (fallback
+ (make-specifier-and-init (specifier-type sp)
+ fallback))
+ ((eq (get-face face) (get-face 'default))
+ (error "Unable to find global specification"))
+ ;; If no fallback we snoop from default
+ (t (face-property 'default property)))))
+ (copy-specifier fallback-sp temp-sp 'global))))
(if (and (valid-specifier-locale-p locale)
(not (specifier-specs temp-sp locale)))
(error "Property must have a specification in locale %S" locale))