From: Jorge P. de Morais Neto <jorge+list@disroot.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 42248@debbugs.gnu.org, stefan@marxist.se
Subject: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors out or gives lots of false positives
Date: Thu, 20 Aug 2020 12:36:01 -0300 [thread overview]
Message-ID: <87eeo1z5we.fsf@disroot.org> (raw)
In-Reply-To: <83k0xtcv7a.fsf@gnu.org>
Em [2020-08-20 qui 16:18:01+0300], Eli Zaretskii escreveu:
> Do you see the same problem when you invoke Enchant from the shell
> prompt?
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
The file /tmp/enchant-test.txt:
--8<---------------cut here---------------start------------->8---
doesn't 2015
Casa 42
--8<---------------cut here---------------end--------------->8---
> The examples you provided all work fine for me, although not with
> Enchant, so I'm inclined to think this is an Enchant problem. Or
> maybe they modified the interface, making it no longer compatible with
> ispell.el. In the latter case, someone with access to Enchant will
> have to tell us how to modify ispell.el to adapt to the Enchant
> changes.
>
> The error message shown in your original report seems to indicate that
> our invocation of Enchant is somehow incorrect, but there isn't enough
> information there to understand what is incorrect and how to fix that.
I should have given you the value of ispell-dictionary-alist. Sorry.
This time I will. So, after executing the following recipe:
1. emacs -Q
2. Evaluate:
(progn
(setq ispell-program-name "enchant-2")
(ispell-change-dictionary "en_US")
(insert "doesn't 2015")
(ispell-buffer))
Then invoking
C-h v ispell-dictionary-alist <RET>
displays the following value:
--8<---------------cut here---------------start------------->8---
((nil "[[:alpha:]]" "[^[:alpha:]]" #1="" t nil nil utf-8)
("pt_BR" #2="[[:alpha:]]" #3="[^[:alpha:]]" #1# t nil nil utf-8)
("en_GB" #2# #3# #1# t nil nil utf-8)
("en_AU" #2# #3# #1# t nil nil utf-8)
("en_US" #2# #3# #1# t nil nil utf-8)
("en" #2# #3# #1# t nil nil utf-8)
("en_CA" #2# #3# #1# t nil nil utf-8)
("" #2# #3# #1# t nil nil utf-8)
("american" "[A-Za-z]" "[^A-Za-z]" "[']" nil
("-B" #4="-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" #4# "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" #4# "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]" #1# nil
("-B" #4# "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" #4# "da_DK")
nil utf-8)
("deutsch" "[a-zA-Z\"]" "[^a-zA-Z\"]" "[']" t
("-C" #4# "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" #4# "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" #4# "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" #4# "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" #4# "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" #4# "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" #4# "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" #4# "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]" #1# 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]" #1# 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]" #1# nil
("-B" #4# "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]" #1# 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" #4# "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]" #1# nil
("-B" #4# "he_IL")
nil utf-8))
--8<---------------cut here---------------end--------------->8---
Therefore, the list for "american" specifies `("-B" #4="-d" "en_US")' as
ISPELL-ARGS. However, enchant-2 does not take a "-B" flag:
$ enchant-2 -B -d en_US /tmp/enchant-test.txt
Usage: enchant-2 -a|-l|-h|-v [-L] [-d DICTIONARY] [FILE]
-d DICTIONARY use the given dictionary
-a list suggestions in ispell pipe mode format
-l list only the misspellings
-L display line numbers
-h display help and exit
-v display version information and exit
$ enchant-2 -B -d en_US -l /tmp/enchant-test.txt
Usage: enchant-2 -a|-l|-h|-v [-L] [-d DICTIONARY] [FILE]
-d DICTIONARY use the given dictionary
-a list suggestions in ispell pipe mode format
-l list only the misspellings
-L display line numbers
-h display help and exit
-v display version information and exit
Also, the list for "en_US" specifies "" for OTHERCHARS, but, IIUC, it
ought to be "[']" instead.
In fact, I just apparently found a workaround for the Flyspell problem
with contractions.
1. emacs -Q
2. Evaluate
(progn
(setq ispell-program-name "enchant-2")
(ispell-change-dictionary "en_US")
(setf (cadddr (assoc "en_US" ispell-dictionary-alist)) (cadddr (assoc "american" ispell-dictionary-alist)))
(insert "doesn't 2015")
(flyspell-buffer))
Unfortunately this workaround did not solve the problem of ispell-buffer
misreporting with numbers. Anyway, I will test it for longer, then
later I will report whether it really solved the Flyspell contraction
problem.
Regards
--
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- I am Brazilian. I hope my English is correct and I welcome feedback.
- <https://www.defectivebydesign.org/>
- <https://www.gnu.org/>
next prev parent reply other threads:[~2020-08-20 15:36 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-07 16:06 bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors out or gives lots of false positives Jorge P. de Morais Neto
[not found] ` <CADwFkm=7Pus_bMhUita=70qsRjfRiNN+oe-YnsCucpParnfPcA@mail.gmail.com>
2020-08-20 1:35 ` Jorge P. de Morais Neto
2020-08-20 1:56 ` Jorge P. de Morais Neto
2020-08-20 13:18 ` Eli Zaretskii
2020-08-20 15:36 ` Jorge P. de Morais Neto [this message]
2020-08-20 16:02 ` Eli Zaretskii
2020-08-20 17:49 ` Jorge P. de Morais Neto
2020-08-20 17:52 ` Jorge P. de Morais Neto
2020-08-20 18:26 ` Eli Zaretskii
2020-08-22 20:54 ` Jorge P. de Morais Neto
2020-08-27 17:30 ` Stefan Kangas
2020-08-27 17:49 ` Eli Zaretskii
2020-08-27 19:05 ` Stefan Kangas
2020-08-27 19:13 ` Eli Zaretskii
2020-08-27 19:13 ` Eli Zaretskii
2020-08-24 14:30 ` Jorge P. de Morais Neto
2020-08-24 14:42 ` Eli Zaretskii
2020-08-30 18:51 ` Jorge P. de Morais Neto
2020-08-24 15:08 ` Stefan Kangas
2020-08-27 17:30 ` Stefan Kangas
2020-08-27 17:49 ` Eli Zaretskii
2020-08-27 19:05 ` Stefan Kangas
2020-08-27 19:14 ` Eli Zaretskii
2020-09-06 23:53 ` bug#42248: Problems between Flyspell and Enchant Reuben Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-07 15:48 ` Eli Zaretskii
2020-09-07 20:07 ` Reuben Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-07 21:20 ` Reuben Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-04-26 13:02 ` bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors out or gives lots of false positives Lars Ingebrigtsen
2020-09-07 21:10 ` bug#42248: Problems between Flyspell and Enchant Reuben Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87eeo1z5we.fsf@disroot.org \
--to=jorge+list@disroot.org \
--cc=42248@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=stefan@marxist.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).