From: Manuel Giraud Date: Thu, 24 Apr 2025 14:27:33 +0000 (+0200) Subject: Reuse calendar temporary faces X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e945addf1ae3e39518f2c355a585d139b2260de5;p=emacs.git Reuse calendar temporary faces * lisp/calendar/calendar.el (calendar-make-temp-face): Reuse temporary face produced by calendar. (Bug#78036) (cherry picked from commit af22c9292df85df9421ef11cadccb656a4bf3d7f) --- diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index 79f16800c12..c9924aefd29 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -2513,9 +2513,9 @@ ATTRLIST is a list with elements of the form :face face :foreground color." (if (not faceinfo) ;; No attributes to apply, so just use an existing-face. face - ;; FIXME should we be using numbered temp-faces, reusing where poss? + ;; Compute temp face name. (setq temp-face - (make-symbol + (intern (concat ":caltemp" (mapconcat (lambda (sym) (cond @@ -2523,10 +2523,12 @@ ATTRLIST is a list with elements of the form :face face :foreground color." ((numberp sym) (number-to-string sym)) (t sym))) attrlist "")))) - (make-face temp-face) - (copy-face face temp-face) - ;; Apply the font aspects. - (apply #'set-face-attribute temp-face nil (nreverse faceinfo)) + ;; Create this new face if it does not already exist. + (unless (member temp-face (face-list)) + (make-face temp-face) + (copy-face face temp-face) + ;; Apply the font aspects. + (apply #'set-face-attribute temp-face nil (nreverse faceinfo))) temp-face))) (defun calendar-mark-visible-date (date &optional mark)