Subject: bug#31034: Disappeared support for Ukrainian spelling check

From: Eli Zaretskii <[email-masked]>
Date: Tue, 03 Apr 2018 13:01:11 +0300

[PLEASE PLEASE keep the bug address on the CC list!]

> From: jamesjames <[email-masked]>
> Date: Tue, 3 Apr 2018 12:29:25 +0300
> 
> 03.04.2018 11:30, Eli Zaretskii пишет:
> > [Please keep the bug address on the CC list.]

Yes, PLEASE!

> > With Aspell and Hunspell, the available dictionaries are not taken
> > from ispell.el, they are dynamically detected by asking the
> > spell-checker to report what dictionaries are installed.  What does
> > the following command display, if invoked from the shell prompt?
> > 
> >   $ aspell dicts
> > 
> > also, what does the following command display?
> > 
> >   $ aspell -vv
> > 
> 
> aspell dicts
> en
> en-variant_0
> en-variant_1
> en-variant_2
> en-w_accents
> en-wo_accents
> en_AU
> en_AU-variant_0
> en_AU-variant_1
> en_AU-w_accents
> en_AU-wo_accents
> en_CA
> en_CA-variant_0
> en_CA-variant_1
> en_CA-w_accents
> en_CA-wo_accents
> en_GB
> en_GB-ise
> en_GB-ise-w_accents
> en_GB-ise-wo_accents
> en_GB-ize
> en_GB-ize-w_accents
> en_GB-ize-wo_accents
> en_GB-variant_0
> en_GB-variant_1
> en_GB-w_accents
> en_GB-wo_accents
> en_US
> en_US-variant_0
> en_US-variant_1
> en_US-w_accents
> en_US-wo_accents
> ru
> ru-ye
> ru-yeyo
> ru-yo
> uk

OK, "uk" is available.

> aspell -vv
> @(#) International Ispell Version 3.1.20 (but really Aspell 0.60.7-rc1)
                                                              ^^^^^^^^^^
That's the problem: Emacs 25 had a bug which prevented it from
accepting Aspell versions that ended in "-rcN".  Emacs 26 fixes this.
You can apply the patch below to ispell.el and recompile ispell.el,
then it should work again.  (Alternatively, you could up- or
down-grade to a version of Aspell whose number doesn't end in "-rcN".)

> eix app-text/aspell
> Installed versions:  0.60.7_rc1(01:40:47 03/29/18)(nls unicode L10N="ru
> uk -af -be -bg -br -ca -cs -cy -da -de -de-1901 -el -en -eo -es -et -fi
> -fo -fr -ga -gl -he -hr -hu -hy -is -it -la -lt -nl -no -pl -pt -pt-BR
> -ro -sk -sl -sr -sv -vi")
> 
> 
> equery files app-dicts/aspell-uk
>  * Searching for aspell-uk in app-dicts ...
>  * Contents of app-dicts/aspell-uk-1.4.0.0:
> /usr
> /usr/lib
> /usr/lib/aspell-0.60
> /usr/lib/aspell-0.60/koi8-u-nl.cmap
> /usr/lib/aspell-0.60/koi8-u-nl.cset
> /usr/lib/aspell-0.60/uk.dat
> /usr/lib/aspell-0.60/uk.multi
> /usr/lib/aspell-0.60/uk.rws
> /usr/lib/aspell-0.60/uk_affix.dat
> /usr/lib/aspell-0.60/ukrainian.alias
> /usr/lib/aspell-0.60/ukrainian.kbd
> /usr/share
> /usr/share/doc
> /usr/share/doc/aspell-uk-1.4.0.0
> /usr/share/doc/aspell-uk-1.4.0.0/README.bz2
> /usr/share/doc/aspell-uk-1.4.0.0/info.bz2
> 
> 
> ispell-change-dictionary displays the selection of languages that are
> not actually present in the system.

This is normal.  What is NOT normal is that the dictionaries present
on your system are not included in the list.  And that happens because
Emacs failed to recognize your Aspell as such.

> The same situation on another computer (gentoo).
> Earlier (06.06.2013), the choice of ukrainian there was still present,
> and .emacs automatically loaded it.
> 
> Perhaps it is required to specify the choice of ukrainian spelling in
> ispell.el?

No, not with Aspell and Hunspell.

Here's a patch that should fix your use case:

--- ispell.el.~1~	2017-04-14 18:02:47.000000000 +0300
+++ ispell.el	2018-04-03 12:57:52.375000000 +0300
@@ -893,11 +893,11 @@
 	(goto-char (point-min))
 	(or (setq ispell-really-aspell
 		  (and (search-forward-regexp
-			"(but really Aspell \\([0-9]+\\.[0-9\\.-]+\\)?)" nil t)
+			"(but really Aspell \\([0-9]+\\.[0-9.]+\\([-._+ ]?[a-zA-Z0-9]+\\)?\\)?)" nil t)
 		       (match-string 1)))
 	    (setq ispell-really-hunspell
 		  (and (search-forward-regexp
-			"(but really Hunspell \\([0-9]+\\.[0-9\\.-]+\\)?)"
+			"(but really Hunspell \\([0-9]+\\.[0-9.]+\\([-._+ ]?[a-zA-Z0-9]+\\)?\\)?)"
                         nil t)
 		       (match-string 1)))))