(cl-do-arglist): Use plist-get and plist-member instead of memq.
This commit is contained in:
parent
3c7fafc7b5
commit
a2d379fb25
1 changed files with 8 additions and 7 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue