Subject: Re: bug#52245: Wishlist: cycle input methods

From: Robert Pluim <[email-masked]>
Date: Wed, 08 Dec 2021 10:40:01 +0100

>>>>> On Tue, 07 Dec 2021 19:11:45 +0200, Eli Zaretskii <[email-masked]> said:
    >> If weʼre now saying we want a separate command that cycles through a
    >> list of input methods, then we might as well add a separate user
    >> option for that list (and then we could add *another* user option
    >> called input-method-toggle-or-cycle to indicate which command should
    >> be used for C-\)
    >> 
    >> I guess we could also have C-u C-u C-\ mean 'cycle', but thatʼs
    >> unergonomic.

    Eli> The use case that I have in mind is this: even if the user customized
    Eli> the list of input methods to include more than just one, there could
    Eli> be situations where the user needs to use just one input method when
    Eli> typing.  In such situations, it would be good to have a way of
    Eli> toggling, like we do now, instead of cycling through all the other
    Eli> methods.

    Eli> Any reasonable solution to this use case would be welcome.  I'm
    Eli> working with systems which allow you to do something like that, and it
    Eli> frequently annoys me to have to cycle through all the keyboard layouts
    Eli> I defined, just to be able to toggle between US English and some other
    Eli> language.  So I wish that Emacs didn't have such an annoying problem,
    Eli> if possible.

Hmm, so how about:

- default-input-method is an atom
  ⇒ C-\ behaves as a toggle

- default-input method is a list
  ⇒ C-\ cycles through them and back to nil
  ⇒ C-\ with a prefix arg behaves as today, prompting
    for an input method. C-\ again deactivates the input method

- C-u C-u C-\ just unconditionally deactives the current input method,
  regardless of the value of default-input-method. Or would 'any
  negative prefix arg' suit better?

I now think having the history automatically be part of the list of
values to cycle through would not be a good idea: that history can get
large, and it can contain duplicates (by default), so trying to reach
the end of your default-input-method list could be annoying.

Robert
--