>From cb1cc374bfb1a5fc5ded8bed55b7f2641925f47a Mon Sep 17 00:00:00 2001 From: Federico Tedin Date: Fri, 6 Dec 2019 01:23:25 +0100 Subject: [PATCH 1/1] Simplify call to add-to-history in read_minibuf * 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 | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/src/minibuf.c b/src/minibuf.c index bdae01dbc5..f8790f5507 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -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'. -- 2.17.1