Function: elisp-scope-rx-let
elisp-scope-rx-let is a byte-compiled function defined in
elisp-scope.el.gz.
Signature
(elisp-scope-rx-let BINDINGS BODY)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/elisp-scope.el.gz
(defun elisp-scope-rx-let (bindings body)
(if-let* ((binding (car bindings)))
(let ((name (car binding)) (rest (cdr binding)))
(when-let* ((bare (elisp-scope--sym-bare name))
(beg (symbol-with-pos-pos name)))
(elisp-scope--report 'rx-construct beg bare beg))
(if (cdr rest)
(let ((l elisp-scope-rx-alist)
(args (car rest))
(rx (cadr rest)))
(dolist (arg args)
(and (symbol-with-pos-p arg)
(when-let* ((beg (symbol-with-pos-pos arg))
(bare (bare-symbol arg)))
(if (memq bare '(&optional &rest _))
(elisp-scope--report 'ampersand beg bare)
(elisp-scope--report 'rx-construct beg bare beg)))))
(dolist (arg args)
(when-let* ((bare (bare-symbol arg))
(beg (elisp-scope--sym-pos arg)))
(unless (memq bare '(&optional &rest))
(setq l (elisp-scope--local-new bare beg l)))))
(let ((elisp-scope-rx-alist l))
(elisp-scope-rx-1 rx))
(let ((elisp-scope-rx-alist (elisp-scope--local-new (elisp-scope--sym-bare name)
(elisp-scope--sym-pos name)
elisp-scope-rx-alist)))
(elisp-scope-rx-let (cdr bindings) body)))
(elisp-scope-rx-1 (car rest))
(let ((elisp-scope-rx-alist (elisp-scope--local-new (elisp-scope--sym-bare name)
(elisp-scope--sym-pos name)
elisp-scope-rx-alist)))
(elisp-scope-rx-let (cdr bindings) body))))
(elisp-scope-n body)))