Subject: bug#43084: toggle-korean-input-method, Korean with Dvorak

From: "L.J. Lee" <[email-masked]>
Date: Fri, 29 Jan 2021 13:54:52 +0900

Lars Ingebrigtsen writes:

> "L.J. Lee" <[email-masked]> writes:
>
>> I was  puzzled, however, that my Korean layout
>> reverted to the more common 2-beol-sik (korean-hangul) whenever I
>> pressed S-SPC. C-\ would work to switch my layout correctly, but
>> pressing S-SPC even once to toggle to Korean layout would change the
>> default layout to korean-hangul and necessitate a manual change back to
>> korean-hangul3f
>> using M-x set-input-method.
>>
>> I found out through language-info-alist that S-SPC is
>> bound to toggle-korean-input-method, and used the function query to
>> track this function to korea-util.el under lisp/language.
>>
>> As expected, the toggle-korean-input-method function set the
>> default input method to korean-hangul regardless of user settings, so I
>> redefined it from init.el to set the default-korean-keyboard as
>> korean-hangul3f. Here's the code I used:
>>
>> (with-eval-after-load "language/korea-util"
>> (defun toggle-korean-input-method ()
>> "Turn on or off a Korean text input method for the current butter."
>> (interactive)
>> (if current-input-method
>>     (deactivate-input-method)
>>     (activate-input-method)
>>         (concat "korean-hangul3f" default-korean-keyboard)))))
>
> I don't use the Korean input methods, so this is totally uninformed --
> but looking at the code, your alteration seems to be the same as putting
>
> (setq default-korean-keyboard "3f")
>
> in your init file?
>
> In which case configuring this is already supported in Emacs.

It doesn't, actually--your suggested method was what I tried at first,
because it's the normal way to do things.
However, my setting didn't survive the first time I tried to
switch between Korean and English using S-SPC because doing so triggered
toggle-korean-input-method, which overrode my default-korean-keyboard
setting (korean-hangul3f) and reset it to korean-hangul instead.

Long story short, the toggle-korean-input-method is written to
override user settings which is just Bad Code and should be changed.

(Most Korean keyboard users wouldn't even notice, by the way, because
most use korean-hangul and korean-hangul3f is a minority layout.
It's probably why this error survived so long.)

Regards,
-- 
L.J. Lee
Mastodon account: https://rage.love/@ljwrites
Dreamwidth blog: https://lj_writes.dreamwidth.org