diff options
| author | Adam Porter <adam@alphapapa.net> | 2025-11-17 19:17:48 -0600 |
|---|---|---|
| committer | Adam Porter <adam@alphapapa.net> | 2025-11-17 19:17:48 -0600 |
| commit | 790aee7d8fdd658bd1740b5e59a5e64c3842014b (patch) | |
| tree | de49bb281fe98f3810169064d3504baf1c173ebe | |
| parent | e64378b8e99282a68ebc3b630fc3b0d1dcfeac8a (diff) | |
Fix: (ement-propertize) Passthrough caseexternals/ement
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.
| -rw-r--r-- | ement-macros.el | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/ement-macros.el b/ement-macros.el index 87c10c5..b1e6929 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 |
