(defvar *gensym-counter* (* (logand (cl-random-time) 1023) 100))
+(defun gensym (&optional arg)
+ "Generate a new uninterned symbol.
+The name is made by appending a number to PREFIX, default \"G\"."
+ (let ((prefix (if (stringp arg) arg "G"))
+ (num (if (integerp arg) arg
+ (prog1 *gensym-counter*
+ (setq *gensym-counter* (1+ *gensym-counter*))))))
+ (make-symbol (format "%s%d" prefix num))))
+
+(defun gentemp (&optional arg)
+ "Generate a new interned symbol with a unique name.
+The name is made by appending a number to PREFIX, default \"G\"."
+ (let ((prefix (if (stringp arg) arg "G"))
+ name)
+ (while (intern-soft (setq name (format "%s%d" prefix *gensym-counter*)))
+ (setq *gensym-counter* (1+ *gensym-counter*)))
+ (intern name)))
;;; Numbers.
;(load "cl-defs")
;;; Define data for indentation and edebug.
-(mapc
+(mapcar
#'(lambda (entry)
- (mapc
+ (mapcar
#'(lambda (func)
(put func 'lisp-indent-function (nth 1 entry))
(put func 'lisp-indent-hook (nth 1 entry))
(defun cl-hack-byte-compiler ()
(if (and (not cl-hacked-flag) (fboundp 'byte-compile-file-form))
(progn
+ (when (not (fboundp 'cl-compile-time-init))
+ (load "cl-macs" nil t))
(cl-compile-time-init) ; in cl-macs.el
(setq cl-hacked-flag t))))