Function: elisp-scope-cl-lambda-key
elisp-scope-cl-lambda-key is a byte-compiled function defined in
elisp-scope.el.gz.
Signature
(elisp-scope-cl-lambda-key ARG ARGLIST MORE BODY)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/elisp-scope.el.gz
(defun elisp-scope-cl-lambda-key (arg arglist more body)
(let* ((a (ensure-list arg))
(var (car a))
(l elisp-scope-local-bindings)
(init (cadr a))
(svar (caddr a))
(kw (car-safe var)))
(elisp-scope-1 init)
(and kw (or (symbolp kw) (symbol-with-pos-p kw))
(cadr var)
(not (cddr var))
;; VAR is (KEYWORD VAR)
(setq var (cadr var)))
(when-let* ((bare (elisp-scope--sym-bare kw))
((keywordp bare)))
(when-let* ((beg (elisp-scope--sym-pos kw)))
(elisp-scope--report 'constant beg bare))
(setq l (elisp-scope--local-new bare (elisp-scope--sym-pos svar) l)))
(if (consp var)
(let ((elisp-scope-local-bindings l))
(elisp-scope-cl-lambda-1 var (cons (append (when svar (list svar))
(cons '&key arglist))
more)
body))
(when-let* ((bare (elisp-scope--sym-bare svar)))
(when-let* ((beg (elisp-scope--sym-pos svar)))
(elisp-scope--binding bare beg))
(setq l (elisp-scope--local-new bare (elisp-scope--sym-pos svar) l)))
(when-let* ((bare (elisp-scope--sym-bare var)))
(when-let* ((beg (elisp-scope--sym-pos var)))
(elisp-scope--binding bare beg))
(setq l (elisp-scope--local-new bare (elisp-scope--sym-pos var) l)))
(cond
(arglist
(let* ((head (car arglist))
(bare (elisp-scope--sym-bare head)))
(if (memq bare '(&aux &allow-other-keys))
(progn
(when-let* ((beg (elisp-scope--sym-pos head)))
(elisp-scope--report 'ampersand beg bare))
(cl-case bare
(&aux
(let ((elisp-scope-local-bindings l))
(elisp-scope-cl-lambda-aux (cadr arglist) (cddr arglist) more body)))
(&allow-other-keys
(let ((elisp-scope-local-bindings l))
(elisp-scope-cl-lambda-1 (car more) (cdr more) body)))))
(let ((elisp-scope-local-bindings l))
(elisp-scope-cl-lambda-key head (cdr arglist) more body)))))
(more (let ((elisp-scope-local-bindings l))
(elisp-scope-cl-lambda-1 (car more) (cdr more) body)))
(t (let ((elisp-scope-local-bindings l))
(elisp-scope-lambda nil body)))))))