Subject: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors out or gives lots of false positives

From: Jorge P. de Morais Neto <[email-masked]>
Date: Thu, 20 Aug 2020 14:49:01 -0300

Em [2020-08-20 qui 19:02:31+0300], Eli Zaretskii escreveu:

>> Yes, enchant-2 on the command line misreports numbers:
>> $ enchant-2 -d en_US -l /tmp/enchant-test.txt
>> 2015
>> Casa
>> 42
>>
>> $ enchant-2 -d pt_BR -l /tmp/enchant-test.txt
>> doesn't
>> 2015
>> 42
>
> Then I guess at least part of the problem is with Enchant (or the
> Aspell back-end it uses), and not with Emacs.

And I now checked that enchant-2 from Debian testing does not misreport
numbers.  I will ask the Guix mailing list.

>> Also, the list for "en_US" specifies "" for OTHERCHARS, but, IIUC, it
>> ought to be "[']" instead.
>
> This means something is wrong with the initialization, as the data is
> set up correctly in ispell.el.  Does the above happen in "emacs -Q"?

I have just tried on emacs -Q on Debian testing and OTHERCHARS got yet
another result, which also seems wrong because it omits the apostrophe.

This was on an updated Debian bullseye with enchant 2.2.8 from APT.

Recipe:
0. emacs -q
1. Evaluate
    (progn
                 (setq ispell-program-name "enchant-2")
                 (ispell-change-dictionary "en_US")
                 (insert "doesn't 2015")
                 (ispell-buffer))

2. Check ispell-dictionary-alist.  The value:
--8<---------------cut here---------------start------------->8---
((nil "[[:alpha:]]" "[^[:alpha:]]" "[0123456789]" t nil nil utf-8)
 ("en_GB" #1="[[:alpha:]]" #2="[^[:alpha:]]" "[0123456789]" t nil nil utf-8)
 ("en_CA" #1# #2# "[0123456789]" t nil nil utf-8)
 ("en_US" #1# #2# "[0123456789]" t nil nil utf-8)
 ("en_AU" #1# #2# "[0123456789]" t nil nil utf-8)
 ("pt_BR" #1# #2# "[0123456789]" t nil nil utf-8)
 ("en" #1# #2# "[0123456789]" t nil nil utf-8)
 ("" #1# #2# "[0123456789]" t nil nil utf-8)
 ("american" "[A-Za-z]" "[^A-Za-z]" "[']" nil
  ("-B" #3="-d" "en_US")
  nil utf-8)
 ("brasileiro" "[A-Z\301\311\315\323\332\300\310\314\322\331\303\325\307\334\302\312\324a-z\341\351\355\363\372\340\350\354\362\371\343\365\347\374\342\352\364]" "[^A-Z\301\311\315\323\332\300\310\314\322\331\303\325\307\334\302\312\324a-z\341\351\355\363\372\340\350\354\362\371\343\365\347\374\342\352\364]" "[']" nil nil nil utf-8)
 ("british" "[A-Za-z]" "[^A-Za-z]" "[']" nil
  ("-B" #3# "en_GB")
  nil utf-8)
 ("castellano" "[A-Z\301\311\315\321\323\332\334a-z\341\351\355\361\363\372\374]" "[^A-Z\301\311\315\321\323\332\334a-z\341\351\355\361\363\372\374]" "[-]" nil
  ("-B" #3# "es_ES")
  "~tex" utf-8)
 ("castellano8" "[A-Z\301\311\315\321\323\332\334a-z\341\351\355\361\363\372\374]" "[^A-Z\301\311\315\321\323\332\334a-z\341\351\355\361\363\372\374]" "[-]" nil
  ("-B" "-d" "castellano")
  "~latin1" utf-8)
 ("czech" "[A-Za-z\301\311\314\315\323\332\331\335\256\251\310\330\317\253\322\341\351\354\355\363\372\371\375\276\271\350\370\357\273\362]" "[^A-Za-z\301\311\314\315\323\332\331\335\256\251\310\330\317\253\322\341\351\354\355\363\372\371\375\276\271\350\370\357\273\362]" #4="" nil
  ("-B" #3# "cs_CZ")
  nil utf-8)
 ("dansk" "[A-Z\306\330\305a-z\346\370\345]" "[^A-Z\306\330\305a-z\346\370\345]" "[']" nil
  ("-C" #3# "da_DK")
  nil utf-8)
 ("deutsch" "[a-zA-Z\"]" "[^a-zA-Z\"]" "[']" t
  ("-C" #3# "de_DE")
  "~tex" utf-8)
 ("deutsch8" "[a-zA-Z\304\326\334\344\366\337\374]" "[^a-zA-Z\304\326\334\344\366\337\374]" "[']" t
  ("-C" "-d" "deutsch")
  "~latin1" utf-8)
 ("english" "[A-Za-z]" "[^A-Za-z]" "[']" nil
  ("-B" #3# "en_US")
  nil utf-8)
 ("esperanto" "[A-Za-z\246\254\266\274\306\330\335\336\346\370\375\376]" "[^A-Za-z\246\254\266\274\306\330\335\336\346\370\375\376]" "[-']" t
  ("-C" #3# "eo")
  "~latin3" utf-8)
 ("esperanto-tex" "[A-Za-z^\\]" "[^A-Za-z^\\]" "[-'`\"]" t
  ("-C" "-d" "esperanto")
  "~tex" utf-8)
 ("finnish" "[A-Za-z\345\344\366\305\304\326]" "[^A-Za-z\345\344\366\305\304\326]" "[:]" nil
  ("-C" #3# "fi_FI")
  "~list" utf-8)
 ("francais7" "[A-Za-z]" "[^A-Za-z]" "[`'^-]" t nil nil utf-8)
 ("francais" "[A-Za-z\300\302\306\307\310\311\312\313\316\317\324\331\333\334\340\342\347\350\351\352\353\356\357\364\371\373\374]" "[^A-Za-z\300\302\306\307\310\311\312\313\316\317\324\331\333\334\340\342\347\350\351\352\353\356\357\364\371\373\374]" "[-'.@]" t nil "~list" utf-8)
 ("francais-tex" "[A-Za-z\300\302\306\307\310\311\312\313\316\317\324\331\333\334\340\342\347\350\351\352\353\356\357\364\371\373\374\\]" "[^A-Za-z\300\302\306\307\310\311\312\313\316\317\324\331\333\334\340\342\347\350\351\352\353\356\357\364\371\373\374\\]" "[-'^`\".@]" t nil "~tex" utf-8)
 ("german" "[a-zA-Z\"]" "[^a-zA-Z\"]" "[']" t
  ("-C" #3# "de_DE")
  "~tex" utf-8)
 ("german8" "[a-zA-Z\304\326\334\344\366\337\374]" "[^a-zA-Z\304\326\334\344\366\337\374]" "[']" t
  ("-C" "-d" "german")
  "~latin1" utf-8)
 ("italiano" "[A-Z\300\301\310\311\314\315\322\323\331\332a-z\340\341\350\351\354\355\363\371\372]" "[^A-Z\300\301\310\311\314\315\322\323\331\332a-z\340\341\350\351\354\355\363\371\372]" "[-.]" nil
  ("-B" "-d" "italian")
  "~tex" utf-8)
 ("nederlands" "[A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374]" "[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374]" "[']" t
  ("-C" #3# "nl_NL")
  nil utf-8)
 ("nederlands8" "[A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374]" "[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374]" "[']" t
  ("-C" #3# "nl_NL")
  nil utf-8)
 ("norsk" "[A-Za-z\305\306\307\310\311\322\324\330\345\346\347\350\351\362\364\370]" "[^A-Za-z\305\306\307\310\311\322\324\330\345\346\347\350\351\362\364\370]" "[\"]" nil nil "~list" utf-8)
 ("norsk7-tex" "[A-Za-z{}\\'^`]" "[^A-Za-z{}\\'^`]" "[\"]" nil
  ("-d" "norsk")
  "~plaintex" utf-8)
 ("polish" "[A-Za-z\241\243\246\254\257\261\263\266\274\277\306\312\321\323\346\352\361\363]" "[^A-Za-z\241\243\246\254\257\261\263\266\274\277\306\312\321\323\346\352\361\363]" "[.]" nil nil nil utf-8)
 ("portugues" "[a-zA-Z\301\302\307\311\323\340\341\342\351\352\355\363\343\347\372]" "[^a-zA-Z\301\302\307\311\323\340\341\342\351\352\355\363\343\347\372]" "[']" t
  ("-C" #3# "pt_PT")
  "~latin1" utf-8)
 ("russian" "[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]" "[^\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]" #4# nil nil nil utf-8)
 ("russianw" "[\300\301\302\303\304\305\250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\334\333\332\335\336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\374\373\372\375\376\377]" "[^\300\301\302\303\304\305\250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\334\333\332\335\336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\374\373\372\375\376\377]" #4# nil nil nil utf-8)
 ("slovak" "[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" "[^A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" #4# nil
  ("-B" #3# "sk_SK")
  nil utf-8)
 ("slovenian" "[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" "[^A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" #4# nil
  ("-B" "-d" "slovenian")
  nil utf-8)
 ("svenska" "[A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]" "[^A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]" "[']" nil
  ("-C" #3# "sv_SE")
  "~list" utf-8)
 ("hebrew" "[\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357\361\362\364\363\367\366\365\370\371\372]" "[^\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357\361\362\364\363\367\366\365\370\371\372]" #4# nil
  ("-B" #3# "he_IL")
  nil utf-8))
--8<---------------cut here---------------end--------------->8---

Best regards

-- 
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- I am Brazilian.  I hope my English is correct and I welcome feedback.
- Free Software Supporter: <https://www.fsf.org/free-software-supporter>
- If an email of mine arrives at your spam box, please notify me.