Commit a2d379fb authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(cl-do-arglist): Use plist-get and plist-member instead of memq.

parent 3c7fafc7
......@@ -257,13 +257,17 @@ ARGLIST allows full Common Lisp conventions."
(while (and (eq (car args) '&key) (cl-pop args))
(while (and args (not (memq (car args) lambda-list-keywords)))
(let ((arg (cl-pop args)))
(or (consp arg) (setq arg (list arg)))
(if (not (consp arg))
;; Simple key arg, we can use plist-get.
(let ((karg (intern (format ":%s" arg))))
(cl-do-arglist arg `(plist-get ,restarg ,karg))
(cl-push karg keys))
(let* ((karg (if (consp (car arg)) (caar arg)
(intern (format ":%s" (car arg)))))
(varg (if (consp (car arg)) (cadar arg) (car arg)))
(def (if (cdr arg) (cadr arg)
(or (car bind-defs) (cadr (assq varg bind-defs)))))
(look (list 'memq (list 'quote karg) restarg)))
(look (list 'plist-member restarg (list 'quote karg))))
(and def bind-enquote (setq def (list 'quote def)))
(if (cddr arg)
(let* ((temp (or (nth 2 arg) (gensym)))
......@@ -285,7 +289,7 @@ ARGLIST allows full Common Lisp conventions."
'quote
(list nil (cl-const-expr-val def)))
(list 'list nil def))))))))
(cl-push karg keys)))))
(cl-push karg keys))))))
(setq keys (nreverse keys))
(or (and (eq (car args) '&allow-other-keys) (cl-pop args))
(null keys) (= safety 0)
......@@ -298,10 +302,7 @@ ARGLIST allows full Common Lisp conventions."
(list (list 'memq (list 'car var)
(list 'quote (append keys allow)))
(list 'setq var (list 'cdr (list 'cdr var))))
(list (list 'car
(list 'cdr
(list 'memq (cons 'quote allow)
restarg)))
(list (list 'plist-get restarg (car allow))
(list 'setq var nil))
(list t
(list
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment