emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master dc9c6a0: Preserve this-command-keys across recursiv


From: Eli Zaretskii
Subject: [Emacs-diffs] master dc9c6a0: Preserve this-command-keys across recursive-edit invocations
Date: Fri, 28 Jul 2017 08:41:45 -0400 (EDT)

branch: master
commit dc9c6a071c0c12be2bd490f85107486bca44623e
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Preserve this-command-keys across recursive-edit invocations
    
    * src/minibuf.c (read_minibuf, read_minibuf_unwind): Save and
    restore this-command-keys, to preserve it across recursive-edit.
    (Bug#27470)
---
 src/minibuf.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/minibuf.c b/src/minibuf.c
index d4128ce..0101529 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -497,6 +497,8 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, 
Lisp_Object prompt,
                                  Fcons (Vminibuffer_history_position,
                                         Fcons (Vminibuffer_history_variable,
                                                minibuf_save_list))))));
+  minibuf_save_list
+    = Fcons (Fthis_command_keys_vector (), minibuf_save_list);
 
   record_unwind_protect_void (read_minibuf_unwind);
   minibuf_level++;
@@ -836,6 +838,11 @@ read_minibuf_unwind (void)
   Fset_buffer (XWINDOW (window)->contents);
 
   /* Restore prompt, etc, from outer minibuffer level.  */
+  Lisp_Object key_vec = Fcar (minibuf_save_list);
+  eassert (VECTORP (key_vec));
+  this_command_key_count = XFASTINT (Flength (key_vec));
+  this_command_keys = key_vec;
+  minibuf_save_list = Fcdr (minibuf_save_list);
   minibuf_prompt = Fcar (minibuf_save_list);
   minibuf_save_list = Fcdr (minibuf_save_list);
   minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));



reply via email to

[Prev in Thread] Current Thread [Next in Thread]