comparison lisp/cl.el @ 2071:0f60caa73962

[xemacs-hg @ 2004-05-11 11:33:08 by stephent] gensym docstring <87r7tryzla.fsf@tleepslib.sk.tsukuba.ac.jp> set-eol-detection fix <87vfj3yzs8.fsf@tleepslib.sk.tsukuba.ac.jp> etags.el tests <87zn8fz03v.fsf@tleepslib.sk.tsukuba.ac.jp>
author stephent
date Tue, 11 May 2004 11:33:22 +0000
parents 9c872f33ecbe
children f557693c61de
comparison
equal deleted inserted replaced
2070:3399b2ba4302 2071:0f60caa73962
317 317
318 (defvar *gensym-counter* (* (logand (cl-random-time) 1023) 100)) 318 (defvar *gensym-counter* (* (logand (cl-random-time) 1023) 100))
319 319
320 (defun gensym (&optional arg) 320 (defun gensym (&optional arg)
321 "Generate a new uninterned symbol. 321 "Generate a new uninterned symbol.
322 The name is made by appending a number to PREFIX, default \"G\"." 322 The name is made by appending a number to a prefix. If ARG is a string, it
323 is the prefix, otherwise the prefix defaults to \"G\". If ARG is an integer,
324 the internal counter is reset to that number before creating the name.
325 There is no way to specify both using this function."
323 (let ((prefix (if (stringp arg) arg "G")) 326 (let ((prefix (if (stringp arg) arg "G"))
324 (num (if (integerp arg) arg 327 (num (if (integerp arg) arg
325 (prog1 *gensym-counter* 328 (prog1 *gensym-counter*
326 (setq *gensym-counter* (1+ *gensym-counter*)))))) 329 (setq *gensym-counter* (1+ *gensym-counter*))))))
327 (make-symbol (format "%s%d" prefix num)))) 330 (make-symbol (format "%s%d" prefix num))))
328 331
329 (defun gentemp (&optional arg) 332 (defun gentemp (&optional arg)
330 "Generate a new interned symbol with a unique name. 333 "Generate a new interned symbol with a unique name.
331 The name is made by appending a number to PREFIX, default \"G\"." 334 The name is made by appending a number to ARG, default \"G\".
335 If ARG is not a string, it is ignored."
332 (let ((prefix (if (stringp arg) arg "G")) 336 (let ((prefix (if (stringp arg) arg "G"))
333 name) 337 name)
334 (while (intern-soft (setq name (format "%s%d" prefix *gensym-counter*))) 338 (while (intern-soft (setq name (format "%s%d" prefix *gensym-counter*)))
335 (setq *gensym-counter* (1+ *gensym-counter*))) 339 (setq *gensym-counter* (1+ *gensym-counter*)))
336 (intern name))) 340 (intern name)))