Subject: bug#32501: Bouncing parentheses broken in REPL with vi-mode enabled

From: Mark H Weaver <[email-masked]>
Date: Fri, 24 Aug 2018 01:36:00 -0400

Hello again,

I wrote:

> The relevant function is 'init_bouncing_parens' in
> guile-readline/readline.c:
>
>   static void
>   init_bouncing_parens ()
>   {
>     if (strncmp (rl_get_keymap_name (rl_get_keymap ()), "vi", 2))
>       {
>         rl_bind_key (')', match_paren);
>         rl_bind_key (']', match_paren);
>         rl_bind_key ('}', match_paren);
>       }
>   }

[...]

> The right fix might be to simply remove the 'if' check above.

Actually, it probably won't be that simple.  Whereas in emacs mode, we
can probably rely on these bindings being added to the correct keymap,
namely 'emacs_standard_keymap', when in vi mode it's likely that these
bindings would end up in the wrong keymap, namely 'vi_movement_keymap'.

When in vi mode, these mappings should be added to
'vi_insertion_keymap', and that probably involves using
'rl_bind_key_in_map' instead of 'rl_bind_key'.

       Mark