]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix invocation with -rv on the command line
authorEli Zaretskii <eliz@gnu.org>
Mon, 4 Mar 2019 16:28:18 +0000 (18:28 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 4 Mar 2019 16:28:18 +0000 (18:28 +0200)
* lisp/frame.el (frame-set-background-mode): Avoid errors from
'face-spec-match-p' when the face was not yet realized for
FRAME.  (Bug#34725)

lisp/frame.el

index 8a4a0b6639b52e25f8c45eee17ac47f114520697..7fe3282eb5974911cde91f3edd38fb72c0c75315 100644 (file)
@@ -1119,9 +1119,23 @@ face specs for the new background mode."
            ;; most faces are unmodified).
            (dolist (face (face-list))
              (and (not (get face 'face-override-spec))
-                  (not (face-spec-match-p face
-                                          (face-user-default-spec face)
-                                          (selected-frame)))
+                  (not (and
+                         ;; If the face was not yet realized for the
+                         ;; frame, face-spec-match-p will signal an
+                         ;; error, so treat such a missing face as
+                         ;; having a mismatched spec; the call to
+                         ;; face-spec-recalc below will then realize
+                         ;; the face for the frame.  This happens
+                         ;; during startup with -rv on the command
+                         ;; line for the initial frame, because frames
+                         ;; are not recorded in the pdump file.
+                         (assq face (frame-face-alist))
+                         (face-spec-match-p face
+                                            (face-user-default-spec face)
+                                            ;; FIXME: why selected-frame and
+                                            ;; not the frame that is the
+                                            ;; argument to this function?
+                                            (selected-frame))))
                   (push face locally-modified-faces)))
            ;; Now change to the new frame parameters
            (modify-frame-parameters frame params)