changeset 32490:ee8a94d08c3d

(cl-do-arglist): Use plist-get and plist-member instead of memq.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 15 Oct 2000 05:23:57 +0000
parents be6e5b11d5a7
children 2fc546f941df
files lisp/emacs-lisp/cl-macs.el
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/cl-macs.el	Sun Oct 15 05:18:48 2000 +0000
+++ b/lisp/emacs-lisp/cl-macs.el	Sun Oct 15 05:23:57 2000 +0000
@@ -257,13 +257,17 @@
       (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 @@
 					  '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 @@
 			  (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