From: Stefan Monnier Date: Sun, 15 Oct 2000 05:23:57 +0000 (+0000) Subject: (cl-do-arglist): Use plist-get and plist-member instead of memq. X-Git-Tag: emacs-pretest-21.0.90~879 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a2d379fb258f190be346977328dc231bbb2a49f5;p=emacs.git (cl-do-arglist): Use plist-get and plist-member instead of memq. --- diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 3dd84648945..a57a3821564 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -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