Subject: bug#50241: flyspell doesn't work with multiple dictionaries

From: Konstantin Kharlamov <[email-masked]>
Date: Sun, 29 Aug 2021 15:43:30 +0300

On Sun, 2021-08-29 at 09:12 +0300, Eli Zaretskii wrote:
> > From: Konstantin Kharlamov <[email-masked]>
> > Cc: [email-masked]
> > Date: Sat, 28 Aug 2021 23:42:08 +0300
> > 
> > Okay, I finally found the working combination, it is:
> > 
> >     (progn
> >       (require 'ispell)
> >       (setq ispell-program-name "hunspell")
> >       (ispell-set-spellchecker-params)
> >       (ispell-hunspell-add-multi-dic "ru_RU,en_US")
> >       (ispell-change-dictionary "ru_RU,en_US")
> >       (flyspell-mode 1)
> >       )
> > 
> > So, the magical function is `(ispell-set-spellchecker-params)`. Judging by
> > its description, it has to be called before any ispell usage.
> > 
> > I can probably call it manually, but I presume the behaviour needs fixing.
> 
> I'm not sure I agree.  These are commands that are supposed to be
> invoked interactively, in the order I've shown, which works.  If you
> want to make this part of your initialization, you need to figure out
> the required sequence of calls, which you did.

Would you agree if I say that a good user interface means that a function invoked interactively should behave same way when it's invoked non-interactively (barring the fact that it won't show the prompt)? I would say that the answer is yes, otherwise it is very confusing.

So I would say, at least the (ispell-set-spellchecker-params) needs to be added into one of them, so the same order as if they were called interactively would work when they are invoked from a Emacs Lisp file.