From 796771b588e88c1e12f1792d6c884f26bc4597da Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Wed, 26 Feb 2025 19:50:28 +0100 Subject: [PATCH] scope.el: Improve cl-loop analysis --- lisp/emacs-lisp/scope.el | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lisp/emacs-lisp/scope.el b/lisp/emacs-lisp/scope.el index 9c8c5a24748..7bbde581bbc 100644 --- a/lisp/emacs-lisp/scope.el +++ b/lisp/emacs-lisp/scope.el @@ -417,6 +417,8 @@ Optional argument LOCAL is a local context to extend." (scope-1 local form) (scope-loop local rest)) +(defvar scope-loop-into-vars nil) + (defun scope-loop-collect (local expr rest) (scope-1 local expr) (let ((bw (scope-sym-bare (car rest))) @@ -425,10 +427,15 @@ Optional argument LOCAL is a local context to extend." (let* ((var (car more)) (bare (scope-sym-bare var)) (beg (scope-sym-pos var))) - (when beg - (scope-report 'variable - beg (length (symbol-name bare)) beg)) - (scope-loop (scope-local-new bare beg local) (cdr more))) + (if (memq bare scope-loop-into-vars) + (progn + (scope-s local var) + (scope-loop local (cdr more))) + (when beg + (scope-report 'variable + beg (length (symbol-name bare)) beg)) + (let ((scope-loop-into-vars (cons bare scope-loop-into-vars))) + (scope-loop (scope-local-new bare beg local) (cdr more))))) (scope-loop local rest)))) (defun scope-loop-with-and (local rest) @@ -471,7 +478,11 @@ Optional argument LOCAL is a local context to extend." ((eq bare 'return) (scope-1 local (car rest)) (scope-loop local (cdr rest)))) - (scope-loop-do local next rest))) + (if (eq (scope-sym-bare (car-safe next)) 'return) + (progn + (scope-1 local (cadr next)) + (scope-loop local (cdr rest))) + (scope-loop-do local next rest)))) (defun scope-loop-initially (local next rest) (if (eq (scope-sym-bare next) 'do) @@ -1276,7 +1287,7 @@ a (possibly empty) list of safe macros.") (scope-define-function-analyzer propertize (_string &rest props) (while props (cl-case (scope-sym-bare (scope--unqoute (car props))) - (face + ((face mouse-face) (when-let ((q (scope--unqoute (cadr props)))) (scope-face q)))) (setq props (cddr props)))) -- 2.39.5