emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/compat 7821117bec 4/4: compat-26: Only define gv expand


From: ELPA Syncer
Subject: [elpa] externals/compat 7821117bec 4/4: compat-26: Only define gv expanders if needed
Date: Fri, 6 Jan 2023 09:57:27 -0500 (EST)

branch: externals/compat
commit 7821117bec2f6353cece59c27494a98dc3640d71
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    compat-26: Only define gv expanders if needed
    
    compat--alist-get is only defined on Emacs < 26.
---
 compat-26.el | 62 ++++++++++++++++++++++++++++++++----------------------------
 1 file changed, 33 insertions(+), 29 deletions(-)

diff --git a/compat-26.el b/compat-26.el
index bde9e8b8a6..bffee6473b 100644
--- a/compat-26.el
+++ b/compat-26.el
@@ -83,34 +83,36 @@ from the absolute start of the buffer, disregarding the 
narrowing."
         (if entry (cdr entry) default))
     (alist-get key alist default remove)))
 
-(gv-define-expander compat--alist-get
-  (lambda (do key alist &optional default remove testfn)
-    (macroexp-let2 macroexp-copyable-p k key
-      (gv-letplace (getter setter) alist
-        (macroexp-let2 nil p `(compat--internal-assoc ,k ,getter ,testfn)
-          (funcall do (if (null default) `(cdr ,p)
-                        `(if ,p (cdr ,p) ,default))
-                   (lambda (v)
-                     (macroexp-let2 nil v v
-                       (let ((set-exp
-                              `(if ,p (setcdr ,p ,v)
-                                 ,(funcall setter
-                                           `(cons (setq ,p (cons ,k ,v))
-                                                  ,getter)))))
-                         `(progn
-                            ,(cond
-                              ((null remove) set-exp)
-                              ((or (eql v default)
-                                   (and (eq (car-safe v) 'quote)
-                                        (eq (car-safe default) 'quote)
-                                        (eql (cadr v) (cadr default))))
-                               `(if ,p ,(funcall setter `(delq ,p ,getter))))
-                              (t
-                               `(cond
-                                 ((not (eql ,default ,v)) ,set-exp)
-                                 (,p ,(funcall setter
-                                               `(delq ,p ,getter))))))
-                            ,v))))))))))
+;; NOTE: Define gv expander only if `compat--alist-get' is defined.
+(when (version< emacs-version "26.1")
+  (gv-define-expander compat--alist-get
+    (lambda (do key alist &optional default remove testfn)
+      (macroexp-let2 macroexp-copyable-p k key
+        (gv-letplace (getter setter) alist
+          (macroexp-let2 nil p `(compat--internal-assoc ,k ,getter ,testfn)
+            (funcall do (if (null default) `(cdr ,p)
+                          `(if ,p (cdr ,p) ,default))
+                     (lambda (v)
+                       (macroexp-let2 nil v v
+                         (let ((set-exp
+                                `(if ,p (setcdr ,p ,v)
+                                   ,(funcall setter
+                                             `(cons (setq ,p (cons ,k ,v))
+                                                    ,getter)))))
+                           `(progn
+                              ,(cond
+                                ((null remove) set-exp)
+                                ((or (eql v default)
+                                     (and (eq (car-safe v) 'quote)
+                                          (eq (car-safe default) 'quote)
+                                          (eql (cadr v) (cadr default))))
+                                 `(if ,p ,(funcall setter `(delq ,p ,getter))))
+                                (t
+                                 `(cond
+                                   ((not (eql ,default ,v)) ,set-exp)
+                                   (,p ,(funcall setter
+                                                 `(delq ,p ,getter))))))
+                              ,v)))))))))))
 
 (compat-defun string-trim-left (string &optional regexp) ;; <OK>
   "Trim STRING of leading string matching REGEXP.
@@ -503,7 +505,9 @@ If VALUE is nil, PROPERTY is removed from IMAGE."
   ;; :feature image
   (plist-get (cdr image) property))
 
-(unless (get 'image-property 'gv-expander)
+(unless (eval-when-compile
+          (require 'image)
+          (get 'image-property 'gv-expander))
   (gv-define-setter image-property (image property value)
     (let ((image* (make-symbol "image"))
           (property* (make-symbol "property"))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]