all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#63204: 29.0.90; vc-annotate does not properly test whether a face exits
@ 2023-05-01 13:15 Tobias Bading
  2023-05-01 18:32 ` Philip Kaludercic
  0 siblings, 1 reply; 4+ messages in thread
From: Tobias Bading @ 2023-05-01 13:15 UTC (permalink / raw)
  To: 63204

1. emacs -Q

2. Imagine that in a previous Emacs session you have copied a string with
    text properties from a buffer in vc-annotate-mode, maybe also searched
    for it somewhere. IOW, your ~/.emacs.d/.emacs.desktop file may contain
    something like this:

    (setq some-search-ring-or-whatever
          '(#("heisenbug" 0 9 (face vc-annotate-face-CCCCFF))))

    Evaluate this expression to simulate a desktop-read of such a previous
    session.

3. Open lisp/vc/vc-annotate.el from the Git branch emacs-29.

4. C-x v g (vc-annotate)

5. There are lines with white background caused by the use of undefined face
    vc-annotate-face-CCCCFF. C-h e should contain:

    Invalid face reference: vc-annotate-face-CCCCFF

    If for whatever reason you don’t see these bad lines, use C-u C-x = to
    see what face a line uses and repeat these steps with this face instead
    of vc-annotate-face-CCCCFF.


This can be fixed with:

diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el
index 70057a6aac..ae8db021ad 100644
--- a/lisp/vc/vc-annotate.el
+++ b/lisp/vc/vc-annotate.el
@@ -724,7 +724,9 @@ vc-annotate-lines
                                        (substring (cdr color) 1)
                                      (cdr color))))
                 ;; Make the face if not done.
-               (face (or (intern-soft face-name)
+               (face (or (let ((sym (intern-soft face-name)))
+                           (if (facep sym)
+                               sym))
                           (let ((tmp-face (make-face (intern face-name))))
                             (set-face-extend tmp-face t)
                             (cond

My Emacs Lisp isn’t that great so please feel free to improve this code
if needed. The important part is that (intern-soft face-name) is not
sufficient to check whether a face exists.


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-05-01 19:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-01 13:15 bug#63204: 29.0.90; vc-annotate does not properly test whether a face exits Tobias Bading
2023-05-01 18:32 ` Philip Kaludercic
2023-05-01 18:50   ` Eli Zaretskii
2023-05-01 19:12     ` Philip Kaludercic

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.