diff lisp/simple.el @ 4821:2c16f99ef5dc

(edit-and-eval-command): Let `read-from-minibuffer' manipulate the history list, don't manipulate it directly. (repeat-complex-command): Same thing.
author Brian Fox <bfox@gnu.org>
date Tue, 05 Oct 1993 01:19:12 +0000
parents 5815d7b38e9a
children a3a72fce1143
line wrap: on
line diff
--- a/lisp/simple.el	Tue Oct 05 00:54:01 1993 +0000
+++ b/lisp/simple.el	Tue Oct 05 01:19:12 1993 +0000
@@ -394,10 +394,13 @@
 the minibuffer, then read and evaluate the result."
   (let ((command (read-from-minibuffer prompt
 				       (prin1-to-string command)
-				       read-expression-map t)))
-    ;; Add edited command to command history, unless redundant.
-    (or (equal command (car command-history))
-	(setq command-history (cons command command-history)))
+				       read-expression-map t
+				       '(command-history . 1))))
+;;; Don't add the command to the history; read-from-minibuffer has
+;;; already done that.
+;;;    ;; Add edited command to command history, unless redundant.
+;;;    (or (equal command (car command-history))
+;;;	(setq command-history (cons command command-history)))
     (eval command)))
 
 (defun repeat-complex-command (arg)
@@ -416,20 +419,23 @@
 	newcmd)
     (if elt
 	(progn
-	  (setq newcmd (read-from-minibuffer "Redo: "
-					     (prin1-to-string elt)
-					     read-expression-map
-					     t
-					     (cons 'command-history
-						   arg)))
-	  ;; If command was added to command-history as a string,
-	  ;; get rid of that.  We want only evallable expressions there.
-	  (if (stringp (car command-history))
-	      (setq command-history (cdr command-history)))
-	  ;; If command to be redone does not match front of history,
-	  ;; add it to the history.
-	  (or (equal newcmd (car command-history))
-	      (setq command-history (cons newcmd command-history)))
+	  (setq newcmd
+		(read-from-minibuffer
+		 "Redo: " (prin1-to-string elt) read-expression-map t
+		 (cons 'command-history arg)))
+
+;;;  read-from-minibuffer handles the adding of what is read to the history
+;;;  variable.
+;;;
+;;;	  ;; If command was added to command-history as a string,
+;;;	  ;; get rid of that.  We want only evallable expressions there.
+;;;	  (if (stringp (car command-history))
+;;;	      (setq command-history (cdr command-history)))
+;;;
+;;;	  ;; If command to be redone does not match front of history,
+;;;	  ;; add it to the history.
+;;;	  (or (equal newcmd (car command-history))
+;;;	      (setq command-history (cons newcmd command-history)))
 	  (eval newcmd))
       (ding))))