From: Stefan Kangas Date: Wed, 5 Mar 2025 04:08:48 +0000 (+0100) Subject: Rewrite cl--parsing-keywords using backtick X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=df1ada73d4f4003db2f8902cae7831b50ef866fc;p=emacs.git Rewrite cl--parsing-keywords using backtick * lisp/emacs-lisp/cl-seq.el (cl--parsing-keywords): Rewrite using backtick. (cherry picked from commit 4b5cc0bfc6d25ff4b7cd16c840e325e9fada4593) --- diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el index f6be1dfd0c6..33f14df0291 100644 --- a/lisp/emacs-lisp/cl-seq.el +++ b/lisp/emacs-lisp/cl-seq.el @@ -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) @@ -59,26 +59,22 @@ (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.