comparison lisp/emacs-lisp/cl-macs.el @ 38259:f4336b326ad3

(cl-do-arglist): Revert change of 2000-10-15.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 02 Jul 2001 15:18:25 +0000
parents ee8a94d08c3d
children 9c9bba5b5bad
comparison
equal deleted inserted replaced
38258:b96d086e358d 38259:f4336b326ad3
255 (list '+ num (list 'length restarg))))) 255 (list '+ num (list 'length restarg)))))
256 bind-forms))) 256 bind-forms)))
257 (while (and (eq (car args) '&key) (cl-pop args)) 257 (while (and (eq (car args) '&key) (cl-pop args))
258 (while (and args (not (memq (car args) lambda-list-keywords))) 258 (while (and args (not (memq (car args) lambda-list-keywords)))
259 (let ((arg (cl-pop args))) 259 (let ((arg (cl-pop args)))
260 (if (not (consp arg)) 260 (or (consp arg) (setq arg (list arg)))
261 ;; Simple key arg, we can use plist-get.
262 (let ((karg (intern (format ":%s" arg))))
263 (cl-do-arglist arg `(plist-get ,restarg ,karg))
264 (cl-push karg keys))
265 (let* ((karg (if (consp (car arg)) (caar arg) 261 (let* ((karg (if (consp (car arg)) (caar arg)
266 (intern (format ":%s" (car arg))))) 262 (intern (format ":%s" (car arg)))))
267 (varg (if (consp (car arg)) (cadar arg) (car arg))) 263 (varg (if (consp (car arg)) (cadar arg) (car arg)))
268 (def (if (cdr arg) (cadr arg) 264 (def (if (cdr arg) (cadr arg)
269 (or (car bind-defs) (cadr (assq varg bind-defs))))) 265 (or (car bind-defs) (cadr (assq varg bind-defs)))))
270 (look (list 'plist-member restarg (list 'quote karg)))) 266 (look (list 'memq (list 'quote karg) restarg)))
271 (and def bind-enquote (setq def (list 'quote def))) 267 (and def bind-enquote (setq def (list 'quote def)))
272 (if (cddr arg) 268 (if (cddr arg)
273 (let* ((temp (or (nth 2 arg) (gensym))) 269 (let* ((temp (or (nth 2 arg) (gensym)))
274 (val (list 'car (list 'cdr temp)))) 270 (val (list 'car (list 'cdr temp))))
275 (cl-do-arglist temp look) 271 (cl-do-arglist temp look)
287 (if (eq (cl-const-expr-p def) t) 283 (if (eq (cl-const-expr-p def) t)
288 (list 284 (list
289 'quote 285 'quote
290 (list nil (cl-const-expr-val def))) 286 (list nil (cl-const-expr-val def)))
291 (list 'list nil def)))))))) 287 (list 'list nil def))))))))
292 (cl-push karg keys)))))) 288 (cl-push karg keys)))))
293 (setq keys (nreverse keys)) 289 (setq keys (nreverse keys))
294 (or (and (eq (car args) '&allow-other-keys) (cl-pop args)) 290 (or (and (eq (car args) '&allow-other-keys) (cl-pop args))
295 (null keys) (= safety 0) 291 (null keys) (= safety 0)
296 (let* ((var (gensym "--keys--")) 292 (let* ((var (gensym "--keys--"))
297 (allow '(:allow-other-keys)) 293 (allow '(:allow-other-keys))
300 (list 296 (list
301 'cond 297 'cond
302 (list (list 'memq (list 'car var) 298 (list (list 'memq (list 'car var)
303 (list 'quote (append keys allow))) 299 (list 'quote (append keys allow)))
304 (list 'setq var (list 'cdr (list 'cdr var)))) 300 (list 'setq var (list 'cdr (list 'cdr var))))
305 (list (list 'plist-get restarg (car allow)) 301 (list (list 'car
302 (list 'cdr
303 (list 'memq (cons 'quote allow)
304 restarg)))
306 (list 'setq var nil)) 305 (list 'setq var nil))
307 (list t 306 (list t
308 (list 307 (list
309 'error 308 'error
310 (format "Keyword argument %%s not one of %s" 309 (format "Keyword argument %%s not one of %s"