changeset 103069:525cb94d171d

* startup.el (normal-top-level): Implement a work-around to handle changes to face-font-rescale-alist during initialization (Bug#1785).
author Chong Yidong <cyd@stupidchicken.com>
date Sat, 25 Apr 2009 14:25:06 +0000
parents 70fe0ad06b3d
children 88c9e3d2daf2
files lisp/ChangeLog lisp/startup.el
diffstat 2 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Apr 25 07:22:50 2009 +0000
+++ b/lisp/ChangeLog	Sat Apr 25 14:25:06 2009 +0000
@@ -1,3 +1,9 @@
+2009-04-25  Chong Yidong  <cyd@stupidchicken.com>
+
+	* startup.el (normal-top-level): Implement a work-around to handle
+	changes to face-font-rescale-alist during
+	initialization (Bug#1785).
+
 2009-04-24  Michael Albinus  <michael.albinus@gmx.de>
 
 	* net/tramp.el (tramp-handle-directory-files-and-attributes-with-stat)
--- a/lisp/startup.el	Sat Apr 25 07:22:50 2009 +0000
+++ b/lisp/startup.el	Sat Apr 25 14:25:06 2009 +0000
@@ -499,7 +499,8 @@
 		     (delete (concat "PWD=" pwd)
 			     process-environment)))))
     (setq default-directory (abbreviate-file-name default-directory))
-    (let ((menubar-bindings-done nil))
+    (let ((menubar-bindings-done nil)
+	  (old-face-font-rescale-alist face-font-rescale-alist))
       (unwind-protect
 	  (command-line)
 	;; Do this again, in case .emacs defined more abbreviations.
@@ -540,6 +541,19 @@
 		  (not (and initial-window-system
 			    (not noninteractive)
 			    (not (eq initial-window-system 'pc)))))
+
+	  ;; FIXME: The user's init file may change
+	  ;; face-font-rescale-alist.  However, the default face
+	  ;; already has an assigned font object, which does not take
+	  ;; face-font-rescale-alist into account.  For such
+	  ;; situations, we ought to have a way to find all font
+	  ;; objects and regenerate them; currently we do not.  As a
+	  ;; workaround, we specifically reset te default face's :font
+	  ;; attribute here.  See bug#1785.
+	  (unless (eq face-font-rescale-alist
+		      old-face-font-rescale-alist)
+	    (set-face-attribute 'default nil :font (font-spec)))
+
 	  ;; Modify the initial frame based on what .emacs puts into
 	  ;; ...-frame-alist.
 	  (if (fboundp 'frame-notice-user-settings)