* 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)
@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)))
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)
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)))
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
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
(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)
(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)
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)
(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))))
;;; Code:
(require 'kmacro)
+(require 'cl-lib)
(require 'seq)
(require 'ert)
(require 'ert-x)
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
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)))))
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))