]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix the startup.el behavior when 'face-font-rescale-alist' is non-nil
authorEli Zaretskii <eliz@gnu.org>
Sun, 10 Jul 2022 08:32:05 +0000 (11:32 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 10 Jul 2022 08:32:05 +0000 (11:32 +0300)
* lisp/startup.el (command-line-1, normal-top-level): Reset the
default face's font only if 'face-font-rescale-alist' affects that
face's font.  For the use case where it matters, see
https://lists.gnu.org/archive/html/emacs-devel/2022-07/msg00157.html.
Make the 'inhibit-startup-screen' and non-inhibit branches behave
the same in that case.

lisp/startup.el

index 4b42cd236c9b201a2f7f72c5b3462ef55bc012bd..45b99eb8931a1316a3bbd14606a3e7844d27c705 100644 (file)
@@ -800,10 +800,12 @@ It is the default value of the variable `top-level'."
          ;; 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)
+         ;; workaround, we specifically reset the default face's :font
+         ;; attribute here, if it was rescaled.  See bug#1785.
+         (when (and (not (eq face-font-rescale-alist
+                             old-face-font-rescale-alist))
+                     (assoc (font-xlfd-name (face-attribute 'default :font))
+                            face-font-rescale-alist #'string-match-p))
            (set-face-attribute 'default nil :font (font-spec)))
 
          ;; Modify the initial frame based on what .emacs puts into
@@ -2840,6 +2842,14 @@ nil default-directory" name)
         ;; before doing any output.
         (run-hooks 'emacs-startup-hook 'term-setup-hook)
 
+        ;; See the commentary in `normal-top-level' for why we do
+        ;; this.
+       (when (and (not (eq face-font-rescale-alist
+                           old-face-font-rescale-alist))
+                   (assoc (font-xlfd-name (face-attribute 'default :font))
+                          face-font-rescale-alist #'string-match-p))
+         (set-face-attribute 'default nil :font (font-spec)))
+
         ;; It's important to notice the user settings before we
         ;; display the startup message; otherwise, the settings
         ;; won't take effect until the user gives the first