From 912826a829fc5e95d677f48b72413dccd216c6e1 Mon Sep 17 00:00:00 2001 From: Mark Oteiza Date: Wed, 13 Sep 2017 10:38:05 -0400 Subject: [PATCH] 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. --- doc/lispref/symbols.texi | 3 +-- lisp/emacs-lisp/cl-macs.el | 11 +++++++++-- lisp/subr.el | 11 ++++------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index 2d9ec6fda30..cda5f1c40f6 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi @@ -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 diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index eee5953882d..3405c92e8d4 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -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 diff --git a/lisp/subr.el b/lisp/subr.el index ebb8b53b502..52d4e190e73 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -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. -- 2.11.4.GIT