Subject: bug#68338: 30.0.50; Repeat mode and input methods

From: Stefan Monnier <[email-masked]>
Date: Thu, 11 Jan 2024 22:51:52 -0500

> I suspect all it takes is to change the:
>
>                    (not (eq (cadr overriding-terminal-local-map)
>                             universal-argument-map))

BTW, this is hence related to Bug#22958 where we fixed it for the
specific case of `C-u` but we now need to fix it more generally.

> IOW define something like a `keymap-transient-p` function, use it there,
> and make sure the keymaps installed by `set-transient-map` are recognized
> by that new function.

Maybe we can treat all `overriding-terminal-local-map` as "transient" in
this respect, as in the patch below.

It's a bit risky, admittedly.  But it would be useful to know what
breaks when we do that, to get a better understanding about what the
condition above should really test.

        Stefan

diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 56f049aedf5..af1335118a1 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -1324,9 +1324,7 @@ quail-input-method
                ;; binding in `universal-argument-map' just return
                ;; (list KEY), otherwise act as if there was no
                ;; overriding map.
-               (or (not (eq (cadr overriding-terminal-local-map)
-                            universal-argument-map))
-                   (lookup-key overriding-terminal-local-map (vector key))))
+               (lookup-key overriding-terminal-local-map (vector key)))
 	  overriding-local-map)
       (list key)
     (quail-setup-overlays (quail-conversion-keymap))