I use <ESC>1 for help:
        bind    index   \e1     help

Pressing an undefined key in message index ends up
in an infinite beeping loop.

The reason is:
km_error_key() wants to print a helpful message:
        Key is not bound.  Press '%s' for help.
km_expand_key() is called and fills buf with "<ESC>1".
This is then pushed into the input using mutt_unget_string().
This likely contains undefined keys and will endlessly loop 
back into km_error_key().

I believe this got introduced by commit 6517:a07e8215a0ef (Create
a separate macro/push/exec event buffer).

This patch fixes the problem for me (I'm very new to the mutt
code, so I'm not sure if this is correct):


--- a/keymap.c  2016-05-18 18:58:20.863536907 +0200
+++ b/keymap.c  2016-05-18 18:58:24.783661152 +0200
@@ -844,7 +844,7 @@
   }
 
   /* make sure the key is really the help key in this menu */
-  mutt_unget_string (buf);
+  tokenize_push_macro_string (buf);
   if (km_dokey (menu) != OP_HELP)
   {
     mutt_error _("Key is not bound.");



-- 
Jiri Bohac <jbo...@suse.cz>
SUSE Labs, SUSE CZ

Reply via email to