]> git.eshelyaron.com Git - emacs.git/commitdiff
(cl-do-arglist): Use plist-get and plist-member instead of memq.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 15 Oct 2000 05:23:57 +0000 (05:23 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 15 Oct 2000 05:23:57 +0000 (05:23 +0000)
lisp/emacs-lisp/cl-macs.el

index 3dd846489458670321d78549daa9ef55ea53a053..a57a3821564f48a506177f5335f171ad714ed850 100644 (file)
@@ -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