From 3c3b50063d784b5efd07a4740e43276dff00b380 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 24 Feb 2025 23:02:20 +0100 Subject: [PATCH] Use cl-with-gensyms in a few more cases * doc/misc/cl.texi (Macro Bindings): * lisp/emacs-lisp/comp.el (comp--with-sp): * lisp/emacs-lisp/subr-x.el (with-buffer-unmodified-if-unchanged): * lisp/eshell/em-extpipe.el (eshell-extpipe--or-with-catch): * lisp/international/mule-cmds.el (with-locale-environment): * lisp/kmacro.el (kmacro-menu--marks-exist-p): * test/lisp/emacs-lisp/cl-extra-tests.el (cl-lib-test-remprop): * test/lisp/emacs-lisp/edebug-tests.el (edebug-tests-deduplicate): * test/lisp/emacs-lisp/ert-tests.el (ert-test-special-operator-p): * test/lisp/kmacro-tests.el (kmacro-tests-should-insert) (kmacro-tests-should-match-message): * test/lisp/replace-tests.el (replace-tests-with-undo): Use cl-with-gensyms instead of bare gensym call. (cherry picked from commit 1a22bc0fd672e2c71955faf81ff2cfd1c0c76be9) --- doc/misc/cl.texi | 2 +- lisp/emacs-lisp/comp.el | 2 +- lisp/emacs-lisp/subr-x.el | 3 +-- lisp/eshell/em-extpipe.el | 2 +- lisp/international/mule-cmds.el | 2 +- lisp/kmacro.el | 2 +- test/lisp/emacs-lisp/cl-extra-tests.el | 2 +- test/lisp/emacs-lisp/edebug-tests.el | 3 +-- test/lisp/emacs-lisp/ert-tests.el | 2 +- test/lisp/kmacro-tests.el | 6 +++--- test/lisp/replace-tests.el | 3 +-- 11 files changed, 13 insertions(+), 16 deletions(-) diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 862b8f4a1c4..b4c1f29f47f 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -1370,7 +1370,7 @@ expansion of another macro: @example (cl-defmacro my-dolist ((x list) &rest body) - (let ((var (cl-gensym))) + (cl-with-gensyms (var) (list 'cl-loop 'for var 'on list 'do (cl-list* 'cl-symbol-macrolet (list (list x (list 'car var))) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index bd80a3890b0..8b57f48b7de 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -953,7 +953,7 @@ Points to the next slot to be filled.") Restore the original value afterwards." (declare (debug (form body)) (indent defun)) - (let ((sym (gensym))) + (cl-with-gensyms (sym) `(let ((,sym (comp--sp))) (setf (comp--sp) ,sp) (progn ,@body) diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 368d7c106e3..13f39f39618 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -543,8 +543,7 @@ as changes in text properties, `buffer-file-coding-system', buffer multibyteness, etc. -- will not be noticed, and the buffer will still be marked unmodified, effectively ignoring those changes." (declare (debug t) (indent 0)) - (let ((hash (gensym)) - (buffer (gensym))) + (cl-with-gensyms (hash buffer) `(let ((,hash (and (not (buffer-modified-p)) (buffer-hash))) (,buffer (current-buffer))) diff --git a/lisp/eshell/em-extpipe.el b/lisp/eshell/em-extpipe.el index 6a061dad89e..c5170fed830 100644 --- a/lisp/eshell/em-extpipe.el +++ b/lisp/eshell/em-extpipe.el @@ -69,7 +69,7 @@ again." If `eshell-incomplete' is thrown during the evaluation of a disjunct, that disjunct yields nil." - (let ((result (gensym))) + (cl-with-gensyms (result) `(let (,result) (or ,@(cl-loop for disjunct in disjuncts collect `(if (catch 'eshell-incomplete diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 0cbc434a478..f6f3f56417e 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2669,7 +2669,7 @@ but this macro does not by itself perform redisplay. If BODY needs to display something with LOCALE-NAME's settings, include a call to `redraw-frame' in BODY." (declare (indent 1) (debug (sexp def-body))) - (let ((current (gensym))) + (cl-with-gensyms (current) `(let ((,current current-locale-environment)) (unwind-protect (progn diff --git a/lisp/kmacro.el b/lisp/kmacro.el index 53029fdc195..faf21e82452 100644 --- a/lisp/kmacro.el +++ b/lisp/kmacro.el @@ -1681,7 +1681,7 @@ line after applying FUNCTION." (defun kmacro-menu--marks-exist-p () "Return non-nil if markers exist for any table entries." - (let ((tag (gensym))) + (cl-with-gensyms (tag) (catch tag (kmacro-menu--map-ids (lambda (id) (when (alist-get (kmacro-menu--id-position id) diff --git a/test/lisp/emacs-lisp/cl-extra-tests.el b/test/lisp/emacs-lisp/cl-extra-tests.el index 41753194c1b..20d1e532a6f 100644 --- a/test/lisp/emacs-lisp/cl-extra-tests.el +++ b/test/lisp/emacs-lisp/cl-extra-tests.el @@ -23,7 +23,7 @@ (require 'ert) (ert-deftest cl-lib-test-remprop () - (let ((x (cl-gensym))) + (cl-with-gensyms (x) (should (equal (symbol-plist x) '())) ;; Remove nonexistent property on empty plist. (cl-remprop x 'b) diff --git a/test/lisp/emacs-lisp/edebug-tests.el b/test/lisp/emacs-lisp/edebug-tests.el index 02eadd34c8d..7daacea7925 100644 --- a/test/lisp/emacs-lisp/edebug-tests.el +++ b/test/lisp/emacs-lisp/edebug-tests.el @@ -321,8 +321,7 @@ NAME should be a string and NAMES-AND-NUMBERS an alist which can be used by this macro to retain state. If NAME for example is \"symbol\" then the first and subsequent uses of this macro will evaluate to \"symbol\", \"symbol-1\", \"symbol-2\", etc." - (let ((g-name (gensym)) - (g-duplicate (gensym))) + (cl-with-gensyms (g-name g-duplicate) `(let* ((,g-name ,name) (,g-duplicate (assoc ,g-name ,names-and-numbers))) (if (null ,g-duplicate) diff --git a/test/lisp/emacs-lisp/ert-tests.el b/test/lisp/emacs-lisp/ert-tests.el index 75b40d0db11..c729028279a 100644 --- a/test/lisp/emacs-lisp/ert-tests.el +++ b/test/lisp/emacs-lisp/ert-tests.el @@ -617,7 +617,7 @@ This macro is used to test if macroexpansion in `should' works." (should (ert--special-operator-p 'if)) (should-not (ert--special-operator-p 'car)) (should-not (ert--special-operator-p 'ert--special-operator-p)) - (let ((b (cl-gensym))) + (cl-with-gensyms (b) (should-not (ert--special-operator-p b)) (fset b 'if) (should (ert--special-operator-p b)))) diff --git a/test/lisp/kmacro-tests.el b/test/lisp/kmacro-tests.el index 356700bbcb0..f43dedcdd74 100644 --- a/test/lisp/kmacro-tests.el +++ b/test/lisp/kmacro-tests.el @@ -24,6 +24,7 @@ ;;; Code: (require 'kmacro) +(require 'cl-lib) (require 'seq) (require 'ert) (require 'ert-x) @@ -157,8 +158,7 @@ Execute BODY, then check that the string VALUE was inserted into the current buffer at point." (declare (debug (stringp body)) (indent 1)) - (let ((g-p (cl-gensym)) - (g-bsize (cl-gensym))) + (cl-with-gensyms (g-p g-bsize) `(let ((,g-p (point)) (,g-bsize (buffer-size))) ,@body @@ -172,7 +172,7 @@ VALUE and any text written to *Messages* during the execution, cause the current test to fail." (declare (debug (form body)) (indent 1)) - (let ((g-captured-messages (cl-gensym))) + (cl-with-gensyms (g-captured-messages) `(ert-with-message-capture ,g-captured-messages ,@body (should (string-match-p ,value ,g-captured-messages))))) diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el index 07a065626f3..288e8865dc5 100644 --- a/test/lisp/replace-tests.el +++ b/test/lisp/replace-tests.el @@ -528,8 +528,7 @@ then replace 3 matches of FROM with TO, and undo the last replacement. Return the last evalled form in BODY." (declare (indent 5) (debug (stringp stringp stringp form characterp body))) - (let ((text (gensym "text")) - (count (gensym "count"))) + (cl-with-gensyms (text count) `(let* ((,text ,input) (,count 0) (inhibit-message t)) -- 2.39.5