]> git.eshelyaron.com Git - emacs.git/commitdiff
Rewrite cl--parsing-keywords using backtick
authorStefan Kangas <stefankangas@gmail.com>
Wed, 5 Mar 2025 04:08:48 +0000 (05:08 +0100)
committerEshel Yaron <me@eshelyaron.com>
Sun, 9 Mar 2025 07:06:13 +0000 (08:06 +0100)
* lisp/emacs-lisp/cl-seq.el (cl--parsing-keywords): Rewrite using
backtick.

(cherry picked from commit 4b5cc0bfc6d25ff4b7cd16c840e325e9fada4593)

lisp/emacs-lisp/cl-seq.el

index f6be1dfd0c610fb2ad70297de7c73b0e21b5a444..33f14df0291e43ddbd9261b417aa677c81a941a6 100644 (file)
@@ -47,7 +47,7 @@
 ;; This is special-cased here so that we can compile
 ;; this file independent from cl-macs.
 
-(defmacro cl--parsing-keywords (kwords other-keys &rest body)
+(defmacro cl--parsing-keywords (keywords other-keys &rest body)
   (declare (indent 2) (debug (sexp sexp &rest form)))
   `(let* ,(mapcar
            (lambda (x)
                    (setq mem `(and ,mem (setq cl-if ,mem) t)))
                (list (intern
                       (format "cl-%s" (substring (symbol-name var) 1)))
-                     (if (consp x) `(or ,mem ,(car (cdr x))) mem))))
-           kwords)
+                     (if (consp x) `(or ,mem ,(cadr x)) mem))))
+           keywords)
      ,@(append
         (and (not (eq other-keys t))
-             (list
-              (list 'let '((cl-keys-temp cl-keys))
-                    (list 'while 'cl-keys-temp
-                          (list 'or (list 'memq '(car cl-keys-temp)
-                                          (list 'quote
-                                                (mapcar
-                                                 (lambda (x)
-                                                   (if (consp x)
-                                                       (car x) x))
-                                                 (append kwords
-                                                         other-keys))))
-                                '(car (cdr (memq (quote :allow-other-keys)
-                                                 cl-keys)))
-                                '(error "Bad keyword argument %s"
-                                        (car cl-keys-temp)))
-                          '(setq cl-keys-temp (cdr (cdr cl-keys-temp)))))))
+             `((let ((cl-keys-temp cl-keys))
+                 (while cl-keys-temp
+                   (or (memq (car cl-keys-temp)
+                             (quote ,(mapcar
+                                      (lambda (x)
+                                        (if (consp x)
+                                            (car x) x))
+                                      (append keywords other-keys))))
+                       (cadr (memq :allow-other-keys cl-keys))
+                       (error "Bad keyword argument %s"
+                              (car cl-keys-temp)))
+                   (setq cl-keys-temp (cddr cl-keys-temp))))))
         body)))
 
 (defmacro cl--check-key (x)     ;Expects `cl-key' in context of generated code.