]> git.eshelyaron.com Git - emacs.git/commitdiff
Simplify call to add-to-history in read_minibuf
authorFederico Tedin <federicotedin@gmail.com>
Fri, 6 Dec 2019 00:23:25 +0000 (01:23 +0100)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 10 Dec 2019 16:12:23 +0000 (11:12 -0500)
* src/minibuf.c (read_minibuf): Avoid restoring the previous buffer,
as this is already done at the end of the function; call
`add-to-history' after that point.

src/minibuf.c

index bdae01dbc5866e5d0f24f13be127894dc0bd2c6f..f8790f55070a73fb2585ebd2b313e5e716b4cf97 100644 (file)
@@ -353,7 +353,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
              Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
              bool allow_props, bool inherit_input_method)
 {
-  Lisp_Object val, previous_buffer = Fcurrent_buffer ();
+  Lisp_Object val;
   ptrdiff_t count = SPECPDL_INDEX ();
   Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
   Lisp_Object enable_multibyte;
@@ -696,30 +696,21 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
   else
     histstring = Qnil;
 
-  /* Add the value to the appropriate history list, if any.  */
-  if (! (NILP (Vhistory_add_new_input) || NILP (histstring)))
-    {
-      ptrdiff_t count2 = SPECPDL_INDEX ();
-
-      /* If possible, switch back to the previous buffer first, in
-        case the history variable is buffer-local.  */
-      if (BUFFER_LIVE_P (XBUFFER (previous_buffer)))
-       {
-         record_unwind_current_buffer ();
-         Fset_buffer (previous_buffer);
-       }
-
-      call2 (intern ("add-to-history"), Vminibuffer_history_variable, histstring);
-      unbind_to (count2, Qnil);
-    }
-
   /* If Lisp form desired instead of string, parse it.  */
   if (expflag)
     val = string_to_object (val, defalt);
 
   /* The appropriate frame will get selected
      in set-window-configuration.  */
-  return unbind_to (count, val);
+  unbind_to (count, Qnil);
+
+  /* Add the value to the appropriate history list, if any.  This is
+     done after the previous buffer has been made current again, in
+     case the history variable is buffer-local.  */
+  if (! (NILP (Vhistory_add_new_input) || NILP (histstring)))
+    call2 (intern ("add-to-history"), histvar, histstring);
+
+  return val;
 }
 
 /* Return a buffer to be used as the minibuffer at depth `depth'.