From: Eshel Yaron Date: Sun, 26 Jan 2025 07:55:39 +0000 (+0100) Subject: Handle `let-alist' double-dot escape X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=10920f111ed20748c382e8bb17e8bd5fb2721bc9;p=emacs.git Handle `let-alist' double-dot escape --- diff --git a/lisp/emacs-lisp/scope.el b/lisp/emacs-lisp/scope.el index 142f9da6f6f..2615661879b 100644 --- a/lisp/emacs-lisp/scope.el +++ b/lisp/emacs-lisp/scope.el @@ -62,9 +62,14 @@ Optional argument LOCAL is a local context to extend." (cond ((keywordp bare) (scope-report 'constant beg len)) ((and scope-current-let-alist-form (= (aref name 0) ?.)) - (scope-report 'variable beg len - (list 'let-alist (car scope-current-let-alist-form) bare) - (cdr scope-current-let-alist-form))) + (if (and (length> name 1) (= (aref name 1) ?.)) + ;; Double dot espaces `let-alist'. + (let* ((unescaped (intern (substring name 1))) + (id (alist-get unescaped local))) + (scope-report 'variable beg len id)) + (scope-report 'variable beg len + (list 'let-alist (car scope-current-let-alist-form) bare) + (cdr scope-current-let-alist-form)))) (t (let ((id (alist-get bare local))) (scope-report 'variable beg len id)))))))