changeset 5069:47cc31b47402

(read_minibuf): History list always gets strings, not Lisp objects made by read.
author Richard M. Stallman <rms@gnu.org>
date Fri, 19 Nov 1993 17:44:23 +0000
parents 9a42f23df119
children 3dab6fdd6bc6
files src/minibuf.c
diffstat 1 files changed, 12 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/minibuf.c	Fri Nov 19 17:43:24 1993 +0000
+++ b/src/minibuf.c	Fri Nov 19 17:44:23 1993 +0000
@@ -259,25 +259,28 @@
   /* VAL is the string of minibuffer text.  */
   last_minibuf_string = val;
 
-  /* If Lisp form desired instead of string, parse it. */
-  if (expflag)
-    val = Fread (val);
-
   /* Add the value to the appropriate history list.  */
   if (XTYPE (Vminibuffer_history_variable) == Lisp_Symbol
       && ! EQ (XSYMBOL (Vminibuffer_history_variable)->value, Qunbound))
     {
       /* If the caller wanted to save the value read on a history list,
-	 then do so if the value is not already the front of the list. */
-      Lisp_Object histval = Fsymbol_value (Vminibuffer_history_variable);
+	 then do so if the value is not already the front of the list.  */
+      Lisp_Object histval;
+      histval = Fsymbol_value (Vminibuffer_history_variable);
 
       /* The value of the history variable must be a cons or nil.  Other
-	 values are unacceptable.  We silenty ignore these values. */
+	 values are unacceptable.  We silently ignore these values.  */
       if (NILP (histval)
-	  || (CONSP (histval) && NILP (Fequal (val, Fcar (histval)))))
-	Fset (Vminibuffer_history_variable, Fcons (val, histval));
+	  || (CONSP (histval)
+	      && NILP (Fequal (last_minibuf_string, Fcar (histval)))))
+	Fset (Vminibuffer_history_variable,
+	      Fcons (last_minibuf_string, histval));
     }
 
+  /* If Lisp form desired instead of string, parse it. */
+  if (expflag)
+    val = Fread (val);
+
   unbind_to (count, Qnil);	/* The appropriate frame will get selected
 				   in set-window-configuration.  */