branch: externals/ement
commit 790aee7d8fdd658bd1740b5e59a5e64c3842014b
Author: Adam Porter <[email protected]>
Commit: Adam Porter <[email protected]>
Fix: (ement-propertize) Passthrough case
This shouldn't affect any existing uses of the macro, and since it's
an internal macro, this shouldn't require a bug-fix release.
---
ement-macros.el | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/ement-macros.el b/ement-macros.el
index 87c10c5b74..b1e692934d 100644
--- a/ement-macros.el
+++ b/ement-macros.el
@@ -237,20 +237,23 @@ the same value."
;; we should preserve backward compatibility. Someday this can be removed
and we'll
;; just call `propertize' again.
(declare (indent defun))
- (when (and (member ''face properties)
- (not (member ''font-lock-face properties)))
- (pcase (plist-get properties ''face #'equal)
- ((or (pred atom) `(quote ,(pred atom)))
- `(propertize ,string ,@properties
- 'font-lock-face ,(plist-get properties ''face #'equal)))
- (_
- ;; Avoid evaluating the 'face property's form twice.
- (let ((value-form (plist-get properties ''face #'equal))
- (value-var (gensym "ement-propertize-")))
- (setf (plist-get properties ''face #'equal) value-var
- (plist-get properties ''font-lock-face #'equal) value-var)
- `(let ((,value-var ,value-form))
- (propertize ,string ,@properties)))))))
+ (if (and (member ''face properties)
+ (not (member ''font-lock-face properties)))
+ (pcase (plist-get properties ''face #'equal)
+ ((or (pred atom) `(quote ,(pred atom)))
+ ;; Face property value is an atom: probably safe to just reuse the
form.
+ `(propertize ,string ,@properties
+ 'font-lock-face ,(plist-get properties ''face #'equal)))
+ (_
+ ;; Not an atom: avoid evaluating the 'face property's form twice.
+ (let ((value-form (plist-get properties ''face #'equal))
+ (value-var (gensym "ement-propertize-")))
+ (setf (plist-get properties ''face #'equal) value-var
+ (plist-get properties ''font-lock-face #'equal) value-var)
+ `(let ((,value-var ,value-form))
+ (propertize ,string ,@properties)))))
+ ;; Passthrough unchanged.
+ `(propertize ,string ,@properties)))
;;;; Variables