Remove "baroque" use of prefix argument from gensym

'cl-gensym' was simply moved here, but let us take an opportunity to
shed some historical baggage.
* lisp/subr.el (gensym): Remove special treatment of PREFIX as a
number.  Use "g" as prefix to differentiate from cl-gensym defaults.
* doc/lispref/symbols.texi (Creating Symbols): Update accordingly.
* lisp/emacs-lisp/cl-macs.el (cl--gensym-counter, cl-gensym): Restore.
This commit is contained in:
Mark Oteiza 2017-09-13 10:38:05 -04:00
parent 3d96fc1536
commit 912826a829
3 changed files with 14 additions and 11 deletions

View file

@ -276,8 +276,7 @@ distinct uninterned symbol whose name is also @samp{foo}.
@defun gensym &optional prefix
This function returns a symbol using @code{make-symbol}, whose name is
made by appending @code{gensym-counter} to @var{prefix}. The prefix
defaults to @code{"G"}. If @var{prefix} is a number, it replaces the
value of the counter.
defaults to @code{"g"}.
@end defun
@defun intern name &optional obarray

View file

@ -161,9 +161,16 @@ whether X is known at compile time, macroexpand it completely in
;;; Symbols.
(defvaralias 'cl--gensym-counter 'gensym-counter)
(defvar cl--gensym-counter 0)
;;;###autoload
(cl--defalias 'cl-gensym 'gensym)
(defun cl-gensym (&optional prefix)
"Generate a new uninterned symbol.
The name is made by appending a number to PREFIX, default \"G\"."
(let ((pfix (if (stringp prefix) prefix "G"))
(num (if (integerp prefix) prefix
(prog1 cl--gensym-counter
(setq cl--gensym-counter (1+ cl--gensym-counter))))))
(make-symbol (format "%s%d" pfix num))))
(defvar cl--gentemp-counter 0)
;;;###autoload

View file

@ -286,13 +286,10 @@ without silencing all errors."
(defun gensym (&optional prefix)
"Return a new uninterned symbol.
The name is made by appending `gensym-counter' to PREFIX.
PREFIX can be a string, and defaults to \"G\".
If PREFIX is a number, it replaces the value of `gensym-counter'."
(let ((pfix (if (stringp prefix) prefix "G"))
(num (if (integerp prefix) prefix
(prog1 gensym-counter
(setq gensym-counter (1+ gensym-counter))))))
(make-symbol (format "%s%d" pfix num))))
PREFIX is a string, and defaults to \"g\"."
(let ((num (prog1 gensym-counter
(setq gensym-counter (1+ gensym-counter)))))
(make-symbol (format "%s%d" prefix num))))
(defun ignore (&rest _ignore)
"Do nothing and return nil.