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

Previous Next

Package: emacs;

Reported by: "Jorge P. de Morais Neto" <jorge+list <at> disroot.org>

Date: Tue, 7 Jul 2020 16:08:02 UTC

Severity: normal

Found in version 27.0.91

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 42248 in the body.
You can then email your comments to 42248 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Tue, 07 Jul 2020 16:08:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Jorge P. de Morais Neto" <jorge+list <at> disroot.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 07 Jul 2020 16:08:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: "Jorge P. de Morais Neto" <jorge+list <at> disroot.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors out or gives
 lots of false positives
Date: Tue, 07 Jul 2020 13:06:27 -0300
Hi.  I have a locally compiled GNU Emacs 27.0.91, installed with GNU
Stow.  I use many packages from Guix, including enchant (version 2.2.8)
and aspell (0.60.8).  I have problems when using enchant on Emacs.

* Problem 1: error message with "american" dictionary

1. Close GNU Emacs and rename the init file (~/.config/emacs/init.el) to
   something Emacs won't recognize
2. Open Emacs.  It will use a vanilla config.
3. M-x toggle-debug-on-error
4. M-x open-dribble-file <RET> ~/Desktop/dribble.txt <RET>
5. M-: (require 'ispell) <RET>
6. M-x customize-option <RET> ispell-program-name <RET>
6.1 Enter the value "/home/jorge/.guix-profile/bin/enchant-2" and set it
7. Open new buffer "test.txt"
8. M-x text-mode
9. Type a misspelled word into its own line; in the next line, a
   correctly spelled word with a contraction.
10. M-x ispell-change-dictionary <RET> american <RET>
11. M-x flyspell-mode

Flyspell then errors out (see "Recent messages:" below).  I expected it
to be enabled without errors.

The dribble file:

<menu>tog-deb-err<tab><return><menu>cus-opt<return>ise<backspace>pell-pro<tab><tab> 0x800003a(require 'ispell)<return><return><menu><up><return>ispell-pro<tab><return>aspell<return><M-backspace>enchant-2qbtest.txt<return><menu>text-mode<return>yelloht<return>doesn't<menu>ispell-chan<tab><return>ameri<tab><return><menu>flyspell-buffer<M-backspace>mode<return><menu>report-emacs-bug<return><return><menu>close-dri<tab><return><return>iDesk<tab>dri<tab><return>

* Problem 2: many false positives with "en_US" dictionary

I performed the following steps in a previous Emacs instance but forgot
to record the dribble file, so here they are from memory:

1. Close GNU Emacs and rename the init file (~/.config/emacs/init.el) to
   something Emacs won't recognize
2. Open Emacs.  It will use a vanilla config.
3. M-: (require 'ispell) <RET>
4. M-x customize-option <RET> ispell-program-name <RET>
4.1 Enter the value "/home/jorge/.guix-profile/bin/enchant-2" and set it
5. Open new buffer "test.txt"
6. M-x text-mode
7. Type a misspelled word into its own line; in the next line, a
   correctly spelled word with a contraction.
8. M-x ispell-change-dictionary <RET> en_US <RET>
9. M-x flyspell-mode

So in this case we use the "en_US" dictionary and Flyspell does not
error out, but gives a lot of annoying false positives, such as in
contractions like "doesn't".  It even gives false positives on numbers;
for example, it complains about the "2015" in the following sentence:

Richard Stallman talking at CommonsFest 2015 in Athens for "A Free Digital Society"

* Parting words

If you need more information please ask me.  King regards.


In GNU Emacs 27.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
 of 2020-07-05 built on jorge--inspiron-5570
Repository revision: 247dcb4b1b1b4ea3d50b63d41c4efa58743f610d
Repository branch: emacs-27
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Debian GNU/Linux 10 (buster)

Recent messages:
Usage: /home/jorge/.guix-profile/bin/enchant-2 -a|-l|-h|-v [-L] [-d DICTIONARY] [FILE])
You can run the command ‘flyspell-mode’ with M-x flys-m RET
Error enabling Flyspell mode:
(  -v             display version information and exit
  -h             display help and exit
  -L             display line numbers
  -l             list only the misspellings
  -a             list suggestions in ispell pipe mode format
  -d DICTIONARY  use the given dictionary
Usage: /home/jorge/.guix-profile/bin/enchant-2 -a|-l|-h|-v [-L] [-d DICTIONARY] [FILE])

Configured using:
 'configure --with-mailutils --with-modules
 --enable-link-time-optimization'

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GSETTINGS GLIB NOTIFY INOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON
PDUMPER LCMS2 GMP

Important settings:
  value of $LC_MONETARY: pt_BR.UTF-8
  value of $LC_NUMERIC: pt_BR.UTF-8
  value of $LC_TIME: pt_BR.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Text

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-w3m hides /usr/local/share/emacs/27.0.91/lisp/org/ol-w3m
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-lua hides /usr/local/share/emacs/27.0.91/lisp/org/ob-lua
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-tangle hides /usr/local/share/emacs/27.0.91/lisp/org/ob-tangle
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-man hides /usr/local/share/emacs/27.0.91/lisp/org/ox-man
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-screen hides /usr/local/share/emacs/27.0.91/lisp/org/ob-screen
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-eshell hides /usr/local/share/emacs/27.0.91/lisp/org/ob-eshell
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-maxima hides /usr/local/share/emacs/27.0.91/lisp/org/ob-maxima
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-lisp hides /usr/local/share/emacs/27.0.91/lisp/org/ob-lisp
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-entities hides /usr/local/share/emacs/27.0.91/lisp/org/org-entities
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-num hides /usr/local/share/emacs/27.0.91/lisp/org/org-num
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-pcomplete hides /usr/local/share/emacs/27.0.91/lisp/org/org-pcomplete
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-crypt hides /usr/local/share/emacs/27.0.91/lisp/org/org-crypt
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-agenda hides /usr/local/share/emacs/27.0.91/lisp/org/org-agenda
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-groovy hides /usr/local/share/emacs/27.0.91/lisp/org/ob-groovy
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-keys hides /usr/local/share/emacs/27.0.91/lisp/org/org-keys
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-gnus hides /usr/local/share/emacs/27.0.91/lisp/org/ol-gnus
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-tempo hides /usr/local/share/emacs/27.0.91/lisp/org/org-tempo
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-table hides /usr/local/share/emacs/27.0.91/lisp/org/ob-table
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-latex hides /usr/local/share/emacs/27.0.91/lisp/org/ox-latex
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-element hides /usr/local/share/emacs/27.0.91/lisp/org/org-element
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-comint hides /usr/local/share/emacs/27.0.91/lisp/org/ob-comint
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-goto hides /usr/local/share/emacs/27.0.91/lisp/org/org-goto
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-octave hides /usr/local/share/emacs/27.0.91/lisp/org/ob-octave
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-plantuml hides /usr/local/share/emacs/27.0.91/lisp/org/ob-plantuml
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-beamer hides /usr/local/share/emacs/27.0.91/lisp/org/ox-beamer
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-eww hides /usr/local/share/emacs/27.0.91/lisp/org/ol-eww
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-lint hides /usr/local/share/emacs/27.0.91/lisp/org/org-lint
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-macs hides /usr/local/share/emacs/27.0.91/lisp/org/org-macs
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-shell hides /usr/local/share/emacs/27.0.91/lisp/org/ob-shell
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-processing hides /usr/local/share/emacs/27.0.91/lisp/org/ob-processing
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-bbdb hides /usr/local/share/emacs/27.0.91/lisp/org/ol-bbdb
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-indent hides /usr/local/share/emacs/27.0.91/lisp/org/org-indent
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-habit hides /usr/local/share/emacs/27.0.91/lisp/org/org-habit
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-ebnf hides /usr/local/share/emacs/27.0.91/lisp/org/ob-ebnf
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-eshell hides /usr/local/share/emacs/27.0.91/lisp/org/ol-eshell
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-gnuplot hides /usr/local/share/emacs/27.0.91/lisp/org/ob-gnuplot
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-ascii hides /usr/local/share/emacs/27.0.91/lisp/org/ox-ascii
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-haskell hides /usr/local/share/emacs/27.0.91/lisp/org/ob-haskell
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-icalendar hides /usr/local/share/emacs/27.0.91/lisp/org/ox-icalendar
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-capture hides /usr/local/share/emacs/27.0.91/lisp/org/org-capture
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-org hides /usr/local/share/emacs/27.0.91/lisp/org/ob-org
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-feed hides /usr/local/share/emacs/27.0.91/lisp/org/org-feed
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-datetree hides /usr/local/share/emacs/27.0.91/lisp/org/org-datetree
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-src hides /usr/local/share/emacs/27.0.91/lisp/org/org-src
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-mouse hides /usr/local/share/emacs/27.0.91/lisp/org/org-mouse
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-coq hides /usr/local/share/emacs/27.0.91/lisp/org/ob-coq
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-ruby hides /usr/local/share/emacs/27.0.91/lisp/org/ob-ruby
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-R hides /usr/local/share/emacs/27.0.91/lisp/org/ob-R
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-awk hides /usr/local/share/emacs/27.0.91/lisp/org/ob-awk
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-info hides /usr/local/share/emacs/27.0.91/lisp/org/ol-info
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-sed hides /usr/local/share/emacs/27.0.91/lisp/org/ob-sed
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-core hides /usr/local/share/emacs/27.0.91/lisp/org/ob-core
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-lob hides /usr/local/share/emacs/27.0.91/lisp/org/ob-lob
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-emacs-lisp hides /usr/local/share/emacs/27.0.91/lisp/org/ob-emacs-lisp
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-calc hides /usr/local/share/emacs/27.0.91/lisp/org/ob-calc
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol hides /usr/local/share/emacs/27.0.91/lisp/org/ol
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox hides /usr/local/share/emacs/27.0.91/lisp/org/ox
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-footnote hides /usr/local/share/emacs/27.0.91/lisp/org/org-footnote
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-ref hides /usr/local/share/emacs/27.0.91/lisp/org/ob-ref
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-id hides /usr/local/share/emacs/27.0.91/lisp/org/org-id
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-rmail hides /usr/local/share/emacs/27.0.91/lisp/org/ol-rmail
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-faces hides /usr/local/share/emacs/27.0.91/lisp/org/org-faces
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-vala hides /usr/local/share/emacs/27.0.91/lisp/org/ob-vala
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-ditaa hides /usr/local/share/emacs/27.0.91/lisp/org/ob-ditaa
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-fortran hides /usr/local/share/emacs/27.0.91/lisp/org/ob-fortran
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-js hides /usr/local/share/emacs/27.0.91/lisp/org/ob-js
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob hides /usr/local/share/emacs/27.0.91/lisp/org/ob
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-colview hides /usr/local/share/emacs/27.0.91/lisp/org/org-colview
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-irc hides /usr/local/share/emacs/27.0.91/lisp/org/ol-irc
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-css hides /usr/local/share/emacs/27.0.91/lisp/org/ob-css
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-ledger hides /usr/local/share/emacs/27.0.91/lisp/org/ob-ledger
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-makefile hides /usr/local/share/emacs/27.0.91/lisp/org/ob-makefile
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-forth hides /usr/local/share/emacs/27.0.91/lisp/org/ob-forth
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-ocaml hides /usr/local/share/emacs/27.0.91/lisp/org/ob-ocaml
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-sql hides /usr/local/share/emacs/27.0.91/lisp/org/ob-sql
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-ctags hides /usr/local/share/emacs/27.0.91/lisp/org/org-ctags
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-macro hides /usr/local/share/emacs/27.0.91/lisp/org/org-macro
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-picolisp hides /usr/local/share/emacs/27.0.91/lisp/org/ob-picolisp
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-protocol hides /usr/local/share/emacs/27.0.91/lisp/org/org-protocol
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-duration hides /usr/local/share/emacs/27.0.91/lisp/org/org-duration
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-io hides /usr/local/share/emacs/27.0.91/lisp/org/ob-io
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-perl hides /usr/local/share/emacs/27.0.91/lisp/org/ob-perl
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-timer hides /usr/local/share/emacs/27.0.91/lisp/org/org-timer
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-install hides /usr/local/share/emacs/27.0.91/lisp/org/org-install
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-compat hides /usr/local/share/emacs/27.0.91/lisp/org/org-compat
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-dot hides /usr/local/share/emacs/27.0.91/lisp/org/ob-dot
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-version hides /usr/local/share/emacs/27.0.91/lisp/org/org-version
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-scheme hides /usr/local/share/emacs/27.0.91/lisp/org/ob-scheme
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-python hides /usr/local/share/emacs/27.0.91/lisp/org/ob-python
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-mobile hides /usr/local/share/emacs/27.0.91/lisp/org/org-mobile
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-abc hides /usr/local/share/emacs/27.0.91/lisp/org/ob-abc
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-loaddefs hides /usr/local/share/emacs/27.0.91/lisp/org/org-loaddefs
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-asymptote hides /usr/local/share/emacs/27.0.91/lisp/org/ob-asymptote
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-md hides /usr/local/share/emacs/27.0.91/lisp/org/ox-md
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org hides /usr/local/share/emacs/27.0.91/lisp/org/org
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-C hides /usr/local/share/emacs/27.0.91/lisp/org/ob-C
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-archive hides /usr/local/share/emacs/27.0.91/lisp/org/org-archive
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-bibtex hides /usr/local/share/emacs/27.0.91/lisp/org/ol-bibtex
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-mscgen hides /usr/local/share/emacs/27.0.91/lisp/org/ob-mscgen
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-texinfo hides /usr/local/share/emacs/27.0.91/lisp/org/ox-texinfo
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-docview hides /usr/local/share/emacs/27.0.91/lisp/org/ol-docview
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-attach-git hides /usr/local/share/emacs/27.0.91/lisp/org/org-attach-git
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-clock hides /usr/local/share/emacs/27.0.91/lisp/org/org-clock
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-plot hides /usr/local/share/emacs/27.0.91/lisp/org/org-plot
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ol-mhe hides /usr/local/share/emacs/27.0.91/lisp/org/ol-mhe
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-clojure hides /usr/local/share/emacs/27.0.91/lisp/org/ob-clojure
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-exp hides /usr/local/share/emacs/27.0.91/lisp/org/ob-exp
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-attach hides /usr/local/share/emacs/27.0.91/lisp/org/org-attach
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-lilypond hides /usr/local/share/emacs/27.0.91/lisp/org/ob-lilypond
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-html hides /usr/local/share/emacs/27.0.91/lisp/org/ox-html
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-org hides /usr/local/share/emacs/27.0.91/lisp/org/ox-org
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-eval hides /usr/local/share/emacs/27.0.91/lisp/org/ob-eval
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-hledger hides /usr/local/share/emacs/27.0.91/lisp/org/ob-hledger
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-latex hides /usr/local/share/emacs/27.0.91/lisp/org/ob-latex
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-list hides /usr/local/share/emacs/27.0.91/lisp/org/org-list
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-sqlite hides /usr/local/share/emacs/27.0.91/lisp/org/ob-sqlite
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-matlab hides /usr/local/share/emacs/27.0.91/lisp/org/ob-matlab
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-stan hides /usr/local/share/emacs/27.0.91/lisp/org/ob-stan
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-J hides /usr/local/share/emacs/27.0.91/lisp/org/ob-J
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-odt hides /usr/local/share/emacs/27.0.91/lisp/org/ox-odt
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-table hides /usr/local/share/emacs/27.0.91/lisp/org/org-table
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/org-inlinetask hides /usr/local/share/emacs/27.0.91/lisp/org/org-inlinetask
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-sass hides /usr/local/share/emacs/27.0.91/lisp/org/ob-sass
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-shen hides /usr/local/share/emacs/27.0.91/lisp/org/ob-shen
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ox-publish hides /usr/local/share/emacs/27.0.91/lisp/org/ox-publish
/home/jorge/.config/emacs/elpa/org-plus-contrib-20200706/ob-java hides /usr/local/share/emacs/27.0.91/lisp/org/ob-java

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml mml-sec epa derived epg epg-config gnus-util
rmail rmail-loaddefs text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils flyspell
misearch multi-isearch ispell thingatpt help-fns radix-tree help-mode
cus-edit wid-edit cus-start cus-load gnu-elpa-features info package
easymenu browse-url url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 99137 7272)
 (symbols 48 10801 1)
 (strings 32 32118 2261)
 (string-bytes 1 1224434)
 (vectors 16 15006)
 (vector-slots 8 183732 9414)
 (floats 8 37 19)
 (intervals 56 274 0)
 (buffers 1000 16))


-- 
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- If an email of mine arrives at your spam box, please notify me.
- Please adopt free/libre formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z.
- Free/libre software for Replicant, LineageOS and Android: https://f-droid.org
- [[https://www.gnu.org/philosophy/free-sw.html][What is free software?]]




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 01:36:02 GMT) Full text and rfc822 format available.

Message #8 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell
 errors out or gives lots of false positives
Date: Wed, 19 Aug 2020 22:35:19 -0300
Em [2020-08-19 qua 17:13:23-0700], Stefan Kangas escreveu:

> I can reproduce this, but most details in the long recipe you gave don't
> matter at all AFAICT.  Here's a minimal recipe:

Yes, I now realize I was wordy.  Thank you for the correction.

> Here, "doesn't" gives the wrong result, but not the number "2015".

Yes.  I don't remember how exactly I got a false positive on "2015", but I
tried your trimmed recipe and here too there is no false positive on
"2015" with flyspell-mode.  There is, however, a false positive with
ispell-buffer.  Should I open a new bug report?

The recipe:

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

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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 01:57:02 GMT) Full text and rfc822 format available.

Message #11 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell
 errors out or gives lots of false positives
Date: Wed, 19 Aug 2020 22:56:34 -0300
I forgot to add that the problem also occurs with pt_BR.  Recipe:

0. emacs -Q
1. Evaluate on a throw-away buffer:

    (progn
                 (setq ispell-program-name "enchant-2")
                 (ispell-change-dictionary "pt_BR")
                 (erase-buffer)
                 (insert "Casa 42")
                 (ispell-buffer))


Best regards

-- 
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- If an email of mine arrives at your spam box, please notify me.
- Please adopt free/libre formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z.
- Free/libre software for Replicant, LineageOS and Android: https://f-droid.org
- [[https://www.gnu.org/philosophy/free-sw.html][What is free software?]]




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 13:19:02 GMT) Full text and rfc822 format available.

Message #14 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: 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 16:18:01 +0300
> From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
> Date: Wed, 19 Aug 2020 22:35:19 -0300
> Cc: 42248 <at> debbugs.gnu.org
> 
> > Here, "doesn't" gives the wrong result, but not the number "2015".
> 
> Yes.  I don't remember how exactly I got a false positive on "2015", but I
> tried your trimmed recipe and here too there is no false positive on
> "2015" with flyspell-mode.  There is, however, a false positive with
> ispell-buffer.  Should I open a new bug report?
> 
> The recipe:
> 
> 0. emacs -Q
> 1. Evaluate
>     (progn
>            (setq ispell-program-name "enchant-2")
>            (ispell-change-dictionary "en_US")
>            (insert "doesn't 2015")
>            (ispell-buffer))

Do you see the same problem when you invoke Enchant from the shell
prompt?

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.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 15:37:02 GMT) Full text and rfc822 format available.

Message #17 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: 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
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/>




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 16:03:02 GMT) Full text and rfc822 format available.

Message #20 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: 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 19:02:31 +0300
> From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
> Cc: stefan <at> marxist.se, 42248 <at> debbugs.gnu.org
> Date: Thu, 20 Aug 2020 12:36:01 -0300
> 
> > 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

Then I guess at least part of the problem is with Enchant (or the
Aspell back-end it uses), and not with Emacs.

> 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

So instead of ignoring -B, Enchant reports an error -- another
incompatibility with Ispell, Aspell, and Hunspell.

> 
> $ 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.

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"?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 17:51:02 GMT) Full text and rfc822 format available.

Message #23 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: 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 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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 17:53:02 GMT) Full text and rfc822 format available.

Message #26 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: 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 14:52:07 -0300
> 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.

I forgot to add: this test was on a locally compiled emacs-27 (commit
"362ca83a3b9d74c51ac325a6490551272aa25f9a").

Regards

-- 
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- If an email of mine arrives at your spam box, please notify me.
- Please adopt free/libre formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z.
- Free/libre software for Replicant, LineageOS and Android: https://f-droid.org
- [[https://www.gnu.org/philosophy/free-sw.html][What is free software?]]




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 20 Aug 2020 18:27:02 GMT) Full text and rfc822 format available.

Message #29 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: 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 21:26:14 +0300
> From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
> Cc: stefan <at> marxist.se, 42248 <at> debbugs.gnu.org
> Date: Thu, 20 Aug 2020 14:49:01 -0300
> 
> >> 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)

I have two comments about this:

  (a) isn't this because Enchant invocation fails as you've
      established, due to the -B switch?

  (b) are you sure the above at all matters? e.g., with Hunspell
      (which is what I have here) it doesn't

Bottom line: someone who has Enchant installed will have to step
through the code which invokes it and sets up spell-checking, and see
what goes wrong with that version of Enchant that uses Aspell.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Sat, 22 Aug 2020 20:55:02 GMT) Full text and rfc822 format available.

Message #32 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell
 errors out or gives lots of false positives
Date: Sat, 22 Aug 2020 17:54:44 -0300
I reported this problem on the help-guix mailing list and they changed
their enchant package so now it behaves the same as Debian's.  It no
longer misreports numerals.  It now depends on hunspell.  See:

https://lists.gnu.org/archive/html/help-guix/2020-08/msg00089.html
https://lists.gnu.org/archive/html/help-guix/2020-08/msg00092.html

However, both ispell-buffer and Flyspell still misreport "doesn't".  The
"en_US" entry in ispell-dictionary-alist specifies "[0123456789]" for
OTHERCHARS.  When I change it to "[0123456789']", Flyspell no longer
misreports "doesn't", but ispell-buffer still does.

Interestingly, the CLI tool enchant-2 misreports "doesn't", but Gedit,
which very probably uses Enchant, correctly accepts "doesn't and four
other contractions I tested.  It seems Gedit calls the enchant library
in a different way than Enchant's own command-line tool.

The reason to believe that Gedit uses Enchant are:
1. Wikipedia says so
2. Gedit's spell checker correctly accepts every word I have in the
   Enchant user dictionary.

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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Mon, 24 Aug 2020 14:31:02 GMT) Full text and rfc822 format available.

Message #35 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell
 errors out or gives lots of false positives
Date: Mon, 24 Aug 2020 11:30:18 -0300
Em [2020-08-20 qui 21:26:14+0300], Eli Zaretskii escreveu:

> I have two comments about this:
>
>   (a) isn't this because Enchant invocation fails as you've
>       established, due to the -B switch?
>
>   (b) are you sure the above at all matters? e.g., with Hunspell
>       (which is what I have here) it doesn't
>
> Bottom line: someone who has Enchant installed will have to step
> through the code which invokes it and sets up spell-checking, and see
> what goes wrong with that version of Enchant that uses Aspell.

OK, so in the weekend I started stepping trough the Enchant setup code
in ispell.el.  I have already made two small but important corrections.
The provisional patch is at the end of this message, but it is not
enough to fix the problem, so you may want to wait until I finish the
job---maybe next weekend?

In order to step though the Enchant setup code, I:
1. Open a new Emacs instance
2. Invoke M-x edebug-all-defs
3. Open ispell.el
4. Invoke M-x eval-buffer twice

Is this the best way to step though the setup code?

And I have found weird behavior of enchant-lsmod-2 on the command line.
See:

$ enchant-lsmod-2 -word-chars en_us
0123456789

Shouldn't the output above include the apostrophe?  And this happens
both on Guix's enchant 2.2.8 and on a locally compiled enchant 2.2.9.  I
have asked the #abiword channel on irc.gnome.org and also subscribed to
the abiword-dev mailing list---I'll ask there if there is no answer in
IRC.

Best regards

--8<---------------cut here---------------start------------->8---
--- 27.1/ispell.el	2020-08-24 11:09:38.429199892 -0300
+++ lisp/ispell.el	2020-08-23 16:49:07.134580642 -0300
@@ -1237,11 +1237,12 @@
   "Find Enchant's dictionaries, and record in `ispell-enchant-dictionary-alist'."
   (let* ((dictionaries
 	  (split-string
-	   (ispell--call-enchant-lsmod "-list-dicts" (buffer-string)) " ([^)]+)\n"))
+	   (ispell--call-enchant-lsmod "-list-dicts")
+	   " ([^)]+)\n"))
          (found
           (mapcar #'(lambda (lang)
                       `(,lang "[[:alpha:]]" "[^[:alpha:]]"
-                              ,(ispell--get-extra-word-characters) t nil nil utf-8))
+                              ,(ispell--get-extra-word-characters lang) t nil nil utf-8))
                   dictionaries)))
     ;; Merge into FOUND any elements from the standard ispell-dictionary-base-alist
     ;; which have no element in FOUND at all.
--8<---------------cut here---------------end--------------->8---


-- 
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- If an email of mine arrives at your spam box, please notify me.
- Please adopt free/libre formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z.
- Free/libre software for Replicant, LineageOS and Android: https://f-droid.org
- [[https://www.gnu.org/philosophy/free-sw.html][What is free software?]]




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Mon, 24 Aug 2020 14:44:02 GMT) Full text and rfc822 format available.

Message #38 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell
 errors out or gives lots of false positives
Date: Mon, 24 Aug 2020 17:42:53 +0300
> From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
> Cc: stefan <at> marxist.se, 42248 <at> debbugs.gnu.org
> Date: Mon, 24 Aug 2020 11:30:18 -0300
> 
> > Bottom line: someone who has Enchant installed will have to step
> > through the code which invokes it and sets up spell-checking, and see
> > what goes wrong with that version of Enchant that uses Aspell.
> 
> OK, so in the weekend I started stepping trough the Enchant setup code
> in ispell.el.  I have already made two small but important corrections.
> The provisional patch is at the end of this message, but it is not
> enough to fix the problem, so you may want to wait until I finish the
> job---maybe next weekend?

Yes, it's better to have the entire issue understood.  Thanks.

I don't think I understand the proposed changes -- can you tell in
more detail why they are needed?

> 
> In order to step though the Enchant setup code, I:
> 1. Open a new Emacs instance
> 2. Invoke M-x edebug-all-defs
> 3. Open ispell.el
> 4. Invoke M-x eval-buffer twice
> 
> Is this the best way to step though the setup code?
> 
> And I have found weird behavior of enchant-lsmod-2 on the command line.
> See:
> 
> $ enchant-lsmod-2 -word-chars en_us
> 0123456789
> 
> Shouldn't the output above include the apostrophe?

Maybe the dictionary you are using doesn't support the apostrophe?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Mon, 24 Aug 2020 15:09:02 GMT) Full text and rfc822 format available.

Message #41 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: "Jorge P. de Morais Neto" <jorge+list <at> disroot.org>,
 Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Mon, 24 Aug 2020 11:08:35 -0400
Jorge P. de Morais Neto <jorge+list <at> disroot.org> writes:

> In order to step though the Enchant setup code, I:
> 1. Open a new Emacs instance
> 2. Invoke M-x edebug-all-defs
> 3. Open ispell.el
> 4. Invoke M-x eval-buffer twice
>
> Is this the best way to step though the setup code?

I recommend finding the relevant defuns, and instrumenting them for
debugging with Edebug using `C-u M-C-e'.

See (info "(elisp) Edebug") for more [copy that expression into Emacs
and evaluate it].




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 17:31:01 GMT) Full text and rfc822 format available.

Message #44 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: "Jorge P. de Morais Neto" <jorge+list <at> disroot.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 10:30:00 -0700
Jorge P. de Morais Neto <jorge+list <at> disroot.org> writes:

> However, both ispell-buffer and Flyspell still misreport "doesn't".

I am using Hunspell and it misrepresents "doesn't" as a typo here, too.

Maybe it's not specific to enchant?

> "en_US" entry in ispell-dictionary-alist specifies "[0123456789]" for
> OTHERCHARS.  When I change it to "[0123456789']", Flyspell no longer
> misreports "doesn't", but ispell-buffer still does.
>
> Interestingly, the CLI tool enchant-2 misreports "doesn't", but Gedit,
> which very probably uses Enchant, correctly accepts "doesn't and four
> other contractions I tested.  It seems Gedit calls the enchant library
> in a different way than Enchant's own command-line tool.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 17:31:02 GMT) Full text and rfc822 format available.

Message #47 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: "Jorge P. de Morais Neto" <jorge+list <at> disroot.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 10:30:12 -0700
Jorge P. de Morais Neto <jorge+list <at> disroot.org> writes:

> And I have found weird behavior of enchant-lsmod-2 on the command line.
> See:
>
> $ enchant-lsmod-2 -word-chars en_us
> 0123456789
>
> Shouldn't the output above include the apostrophe?  And this happens
> both on Guix's enchant 2.2.8 and on a locally compiled enchant 2.2.9.

I have Debian's enchant 2.2.8, and I see the same thing here.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 17:50:02 GMT) Full text and rfc822 format available.

Message #50 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 20:49:07 +0300
> From: Stefan Kangas <stefan <at> marxist.se>
> Date: Thu, 27 Aug 2020 10:30:00 -0700
> Cc: Eli Zaretskii <eliz <at> gnu.org>, 42248 <at> debbugs.gnu.org
> 
> Jorge P. de Morais Neto <jorge+list <at> disroot.org> writes:
> 
> > However, both ispell-buffer and Flyspell still misreport "doesn't".
> 
> I am using Hunspell and it misrepresents "doesn't" as a typo here, too.

It isn't the Hunspell issue, it's an issue with the dictionary.  What
does your en_US.aff file says in the WORDCHARS line(s)?  See the
function ispell-parse-hunspell-affix-file which parses the Hunspell
aff files.

On my system, there's no issue with "don't" (and the apostrophe in
general).

Eventually, the dictionary's entry in the ispell.el's DB is what
matters.  What do you have there?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 17:50:02 GMT) Full text and rfc822 format available.

Message #53 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 20:49:38 +0300
> From: Stefan Kangas <stefan <at> marxist.se>
> Date: Thu, 27 Aug 2020 10:30:12 -0700
> Cc: Eli Zaretskii <eliz <at> gnu.org>, 42248 <at> debbugs.gnu.org
> 
> I have Debian's enchant 2.2.8, and I see the same thing here.

What if you use Hunspell directly?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 19:06:02 GMT) Full text and rfc822 format available.

Message #56 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 12:05:04 -0700
Eli Zaretskii <eliz <at> gnu.org> writes:

>> > However, both ispell-buffer and Flyspell still misreport "doesn't".
>>
>> I am using Hunspell and it misrepresents "doesn't" as a typo here, too.
>
> It isn't the Hunspell issue, it's an issue with the dictionary.  What
> does your en_US.aff file says in the WORDCHARS line(s)?  See the
> function ispell-parse-hunspell-affix-file which parses the Hunspell
> aff files.

WORDCHARS 0123456789

I also found this Debian bug report (with no reply since 2008):

    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=491638

So I guess this is just broken on Debian GNU/Linux.

> On my system, there's no issue with "don't" (and the apostrophe in
> general).
>
> Eventually, the dictionary's entry in the ispell.el's DB is what
> matters.  What do you have there?

Which variable would be of interest?  In
`ispell-hunspell-dictionary-alist' I have the following entry for
"en_US":

("en_US" . #1=("[[:alpha:]]" "[^[:alpha:]]" "[0-9]" t
                ("-d" "en_US")
                nil utf-8))

Is there anything we could do to work around this situation on our end?
(It seems like LibreOffice doesn't have this problem.)

PS. I also saw this unrelated bug report which refers to our workaround
    for "hunspell -D" in hunspell 1.7.0:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659281




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 19:06:02 GMT) Full text and rfc822 format available.

Message #59 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 12:05:13 -0700
Eli Zaretskii <eliz <at> gnu.org> writes:

>> I have Debian's enchant 2.2.8, and I see the same thing here.
>
> What if you use Hunspell directly?

I don't understand what you are asking.  Is there a command I should
run?  I can't find anything in the man page for hunspell.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 19:14:01 GMT) Full text and rfc822 format available.

Message #62 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 22:13:36 +0300
> From: Stefan Kangas <stefan <at> marxist.se>
> Date: Thu, 27 Aug 2020 12:05:04 -0700
> Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
> 
> > It isn't the Hunspell issue, it's an issue with the dictionary.  What
> > does your en_US.aff file says in the WORDCHARS line(s)?  See the
> > function ispell-parse-hunspell-affix-file which parses the Hunspell
> > aff files.
> 
> WORDCHARS 0123456789

Here I have

  WORDCHARS 0123456789'

So my suggestion is to find a better en_US dictionary and install it.

> > Eventually, the dictionary's entry in the ispell.el's DB is what
> > matters.  What do you have there?
> 
> Which variable would be of interest?  In
> `ispell-hunspell-dictionary-alist' I have the following entry for
> "en_US":
> 
> ("en_US" . #1=("[[:alpha:]]" "[^[:alpha:]]" "[0-9]" t
>                 ("-d" "en_US")
>                 nil utf-8))

The one I underlined.  It should be "['0-9]".  So there you have it.

> Is there anything we could do to work around this situation on our end?

Install a better dictionary, I'd say.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 19:15:02 GMT) Full text and rfc822 format available.

Message #65 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 22:13:52 +0300
> From: Stefan Kangas <stefan <at> marxist.se>
> Date: Thu, 27 Aug 2020 12:05:04 -0700
> Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
> 
> > It isn't the Hunspell issue, it's an issue with the dictionary.  What
> > does your en_US.aff file says in the WORDCHARS line(s)?  See the
> > function ispell-parse-hunspell-affix-file which parses the Hunspell
> > aff files.
> 
> WORDCHARS 0123456789

Here I have

  WORDCHARS 0123456789'

So my suggestion is to find a better en_US dictionary and install it.

> > Eventually, the dictionary's entry in the ispell.el's DB is what
> > matters.  What do you have there?
> 
> Which variable would be of interest?  In
> `ispell-hunspell-dictionary-alist' I have the following entry for
> "en_US":
> 
> ("en_US" . #1=("[[:alpha:]]" "[^[:alpha:]]" "[0-9]" t
>                 ("-d" "en_US")              ^^^^^^^
>                 nil utf-8))

The one I underlined.  It should be "['0-9]".  So there you have it.

> Is there anything we could do to work around this situation on our end?

Install a better dictionary, I'd say.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Thu, 27 Aug 2020 19:16:01 GMT) Full text and rfc822 format available.

Message #68 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell errors
 out or gives lots of false positives
Date: Thu, 27 Aug 2020 22:14:31 +0300
> From: Stefan Kangas <stefan <at> marxist.se>
> Date: Thu, 27 Aug 2020 12:05:13 -0700
> Cc: jorge+list <at> disroot.org, 42248 <at> debbugs.gnu.org
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> I have Debian's enchant 2.2.8, and I see the same thing here.
> >
> > What if you use Hunspell directly?
> 
> I don't understand what you are asking.  Is there a command I should
> run?  I can't find anything in the man page for hunspell.

No, I mean configure Emacs to use Hunspell as the speller, not
Enchant.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Sun, 30 Aug 2020 18:53:02 GMT) Full text and rfc822 format available.

Message #71 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Jorge P. de Morais Neto <jorge+list <at> disroot.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell
 errors out or gives lots of false positives
Date: Sun, 30 Aug 2020 15:51:42 -0300
Em [2020-08-24 seg 17:42:53+0300], Eli Zaretskii escreveu:
> Maybe the dictionary you are using doesn't support the apostrophe?

Yes, with your help, I found out that Debian's hunspell-en-us package is
missing the apostrophe in WORDCHARS value in
`/usr/share/hunspell/en_US.aff'.  I have worked around the problem by:
1. Create `~/.config/enchant/hunspell' directory and `cd' to it
2. Symlink `/usr/share/hunspell/en_US.dic' to `./en_US.dic'
3. Copy `/usr/share/hunspell/en_US.aff' to `./en_US.aff'
4. Edit `./en_US.aff' and fix WORDCHARS.

This solves the Emacs contraction problem and doesn't seem to harm other
enchant consumers like LibreOffice and Gedit.  I think I should report
this to the dictionary developers.  And where did you get your en_US
dictionary from?  The en_US hunspell dictionary is wrong both in Debian
buster and Guix.

And what should we do about ispell-dictionary-alist still including "-B"
among ISPELL-ARGS for many of its entries?  This causes an error if the
user chooses one of those dictionaries, such as "american".

> I don't think I understand the proposed changes -- can you tell in
> more detail why they are needed?

The revised patch:
--8<---------------cut here---------------start------------->8---
--- 27.1/ispell.el	2020-08-30 12:45:49.113459675 -0300
+++ lisp/ispell.el	2020-08-30 08:58:57.182813606 -0300
@@ -1237,11 +1237,12 @@
   "Find Enchant's dictionaries, and record in `ispell-enchant-dictionary-alist'."
   (let* ((dictionaries
 	  (split-string
-	   (ispell--call-enchant-lsmod "-list-dicts" (buffer-string)) " ([^)]+)\n"))
+	   (ispell--call-enchant-lsmod "-list-dicts")
+	   " ([^)]+)\n" t))
          (found
           (mapcar #'(lambda (lang)
                       `(,lang "[[:alpha:]]" "[^[:alpha:]]"
-                              ,(ispell--get-extra-word-characters) t nil nil utf-8))
+                              ,(ispell--get-extra-word-characters lang) t nil nil utf-8))
                   dictionaries)))
     ;; Merge into FOUND any elements from the standard ispell-dictionary-base-alist
     ;; which have no element in FOUND at all.
--8<---------------cut here---------------end--------------->8---

The patch removes the extraneous `(buffer-string)' argument to
`ispell--call-enchant-lsmod'.  That argument was passed as the final
argument to `enchant-lsmod-2', which is wrong.  The command we want to
invoke is only `enchant-lsmod-2 -list-dicts'---that is the command to
list Enchant dictionaries according to the enchant-lsmod-2 manpage.  And
it actually works in practice, unlike the former invocation which causes
an error.

The patch also passes t as the OMIT-NULLS argument of `split-string'.
This correctly avoids a final "" string in the return value of
`split-string', because the output of `enchant-lsmod-2 -list-dicts' ends
in a separator.

Finally, the patch passes `lang' to `ispell--get-extra-word-characters',
because the whole point of the invocation is to get the
extra word characters for the language under examination; the former
code always returned the extra word characters for the default language.

The current source code is visibly broken.  And in fact, without my
patch, when you invoke `emacs -q', evaluate (setq ispell-program-name
"enchant-2"), open the original ispell.el.gz, invoke M-x eval-buffer and
then M-x ispell-change-dictionary, you can see the error in the list of
languages.

On the other hand, when you invoke `emacs -q', evaluate
(setq ispell-program-name "enchant-2") and then
M-x ispell-change-dictionary, there is no error!  This makes me suspect
that, somehow, `ispell.elc' does not correspond to `ispell.el.gz'.  That
is a weird idea, but is the only explanation I can think of.  This
occurs on the emacs-27 branch, commit 29708cbde7.

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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Sun, 06 Sep 2020 23:55:01 GMT) Full text and rfc822 format available.

Message #74 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Reuben Thomas <rrt <at> sc3d.org>
To: 42248 <at> debbugs.gnu.org
Subject: Problems between Flyspell and Enchant
Date: Mon, 7 Sep 2020 00:53:52 +0100
[Message part 1 (text/plain, inline)]
[I'm the Enchant maintainer and author of the Enchant support in ispell.el,
so it's All My Fault :) Sorry!]

I cannot reproduce the problem with numbers being detected as misspellings
from the command line with enchant-2 2.2.8 or 2.2.10. (As all the digits
are in WORDCHARS, it is expected that numbers should pass spell-checking.)

I looked into the matter of "-B". It would be quite tiresome to have to
teach ispell.el which spelling checkers accept -B. I notice that hunspell
does not support -B, but it does accept it; indeed, it seems to happily
accept and discard any unknown option. I think Enchant should silently
ignore -B, as it does with -m to work with Emacs.
I agree that the en_US dictionary should contain ' in its WORDCHARS. I
found another, recent, Debian bug about this, this time on the correct
package (the dictionaries):
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=964257 I have merged the
two bug reports in the hopes that this might help!

Note that quotation marks work correctly in the Debian en_GB dictionary,
though there is another problem there: WORDCHARS contains only the curly
quote. This is because hunspell contains the following special rule: if
either the straight or curly single right quote is listed in WORDCHARS,
then the other is also allowed. I have implemented this logic in Enchant
2.2.10 in its hunspell backend (recently released).

I found a couple of minor bugs in enchant: first, it gives an unhelpful
error message when asked for a language it doesn't have; and secondly, at
least for me `enchant-lsmod-2 -list-dicts` does not list the en_US
dictionary even though it is installed. I will look into those, as the
second in particular affects Emacs.

I agree with the patch to ispell.el, in all three points, though for me the
invocation of enchant-lsmod-2 does not fail with the extra argument (this
will be why I didn't notice the problem when I originally wrote the code).
I am happy to install this patch if Eli agrees.

-- 
https://rrt.sc3d.org
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Mon, 07 Sep 2020 15:49:02 GMT) Full text and rfc822 format available.

Message #77 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Reuben Thomas <rrt <at> sc3d.org>
Cc: 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: Problems between Flyspell and Enchant
Date: Mon, 07 Sep 2020 18:48:33 +0300
> Date: Mon, 7 Sep 2020 00:53:52 +0100
> From: Reuben Thomas via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> I agree with the patch to ispell.el, in all three points, though for me the invocation of enchant-lsmod-2 does
> not fail with the extra argument (this will be why I didn't notice the problem when I originally wrote the code). I
> am happy to install this patch if Eli agrees.

I agree, please go ahead.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Mon, 07 Sep 2020 20:08:01 GMT) Full text and rfc822 format available.

Message #80 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Reuben Thomas <rrt <at> sc3d.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: Problems between Flyspell and Enchant
Date: Mon, 7 Sep 2020 21:07:01 +0100
[Message part 1 (text/plain, inline)]
On Mon, 7 Sep 2020 at 16:48, Eli Zaretskii <eliz <at> gnu.org> wrote:

> > Date: Mon, 7 Sep 2020 00:53:52 +0100
> > From: Reuben Thomas via "Bug reports for GNU Emacs,
> >  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> >
> > I agree with the patch to ispell.el, in all three points, though for me
> the invocation of enchant-lsmod-2 does
> > not fail with the extra argument (this will be why I didn't notice the
> problem when I originally wrote the code). I
> > am happy to install this patch if Eli agrees.
>
> I agree, please go ahead.
>

I have installed the patch. Thanks, Jorge! I will now make the fixes I
mentioned to Enchant, and make a new release. Jorge, it would be very
helpful if at that point you could confirm whether the problems other than
en_US's treatment of apostrophes are now fixed for you. I will also review
the test cases from this thread with the updated Enchant and ispell.el.

-- 
https://rrt.sc3d.org
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Mon, 07 Sep 2020 21:11:02 GMT) Full text and rfc822 format available.

Message #83 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Reuben Thomas <rrt <at> sc3d.org>
To: 42248 <at> debbugs.gnu.org
Subject: Re: Problems between Flyspell and Enchant
Date: Mon, 7 Sep 2020 22:10:22 +0100
[Message part 1 (text/plain, inline)]
On Mon, 7 Sep 2020 at 00:53, Reuben Thomas <rrt <at> sc3d.org> wrote:

>
> I found a couple of minor bugs in enchant: first, it gives an unhelpful
> error message when asked for a language it doesn't have; and secondly, at
> least for me `enchant-lsmod-2 -list-dicts` does not list the en_US
> dictionary even though it is installed. I will look into those, as the
> second in particular affects Emacs.
>

It turns out I was mistaken about both of these bugs: the first was just my
forgetting a "mode" flag such as -l, and the second was untrue: en_US was
present in the list, just not near the other en dictionaries. I have made
enchant sort the dictionary tags when it lists them, to make it more
user-friendly!

-- 
https://rrt.sc3d.org
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Mon, 07 Sep 2020 21:21:01 GMT) Full text and rfc822 format available.

Message #86 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Reuben Thomas <rrt <at> sc3d.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: Problems between Flyspell and Enchant
Date: Mon, 7 Sep 2020 22:20:03 +0100
[Message part 1 (text/plain, inline)]
On Mon, 7 Sep 2020 at 21:07, Reuben Thomas <rrt <at> sc3d.org> wrote:

>
> I have installed the patch. Thanks, Jorge! I will now make the fixes I
> mentioned to Enchant, and make a new release. Jorge, it would be very
> helpful if at that point you could confirm whether the problems other than
> en_US's treatment of apostrophes are now fixed for you. I will also review
> the test cases from this thread with the updated Enchant and ispell.el.
>

I am now ready to release 2.2.11. Jorge, if you could report on your
experience with that either by building Enchant directly from
https://github.com/rrthomas/enchant/ or by waiting for the new release at
https://github.com/AbiWord/enchant/ or in Guix, I would be most grateful.
Also I guess you will want the updated version of ispell.el; you can either
build Emacs's master branch, or simply copy its ispell.el into a suitable
directory for your Emacs 27 (I used my user site-lisp directory).

Eli, Jorge, I guess you can decide after that whether this bug can be
closed.

-- 
https://rrt.sc3d.org
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#42248; Package emacs. (Tue, 26 Apr 2022 13:03:02 GMT) Full text and rfc822 format available.

Message #89 received at 42248 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Reuben Thomas <rrt <at> sc3d.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 42248 <at> debbugs.gnu.org
Subject: Re: bug#42248: 27.0.91; With enchant-2.2.8 from Guix, Flyspell
 errors out or gives lots of false positives
Date: Tue, 26 Apr 2022 15:02:47 +0200
Reuben Thomas <rrt <at> sc3d.org> writes:

> I am now ready to release 2.2.11. Jorge, if you could report on your
> experience with that either by building Enchant directly from
> https://github.com/rrthomas/enchant/ or by waiting for the new release
> at https://github.com/AbiWord/enchant/ or in Guix, I would be most
> grateful. Also I guess you will want the updated version of ispell.el;
> you can either build Emacs's master branch, or simply copy its
> ispell.el into a suitable directory for your Emacs 27 (I used my user
> site-lisp directory).
>
> Eli, Jorge, I guess you can decide after that whether this bug can be closed.

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

This was a year ago, so I assume that Reuben's changes fixed the issue,
and I'm therefore closing this bug report.  If I misunderstood, please
respond to the debbugs address and we'll reopen.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug closed, send any further explanations to 42248 <at> debbugs.gnu.org and "Jorge P. de Morais Neto" <jorge+list <at> disroot.org> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Tue, 26 Apr 2022 13:04:01 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 25 May 2022 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 330 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.