> From: Reuben Thomas <rrt@sc3d.org>
> Date: Sun, 18 Dec 2016 23:39:54 +0000
> Cc: 17742@debbugs.gnu.org
>
> I have not had any response to my enquiries yet, but I did some research, and neither GNU Aspell nor hunspell offer any way to get this information (about character classes of dictionaries) via their APIs.
They provide this information in the dictionaries, and we glean it
from there. See ispell-parse-hunspell-affix-file and
ispell-aspell-find-dictionary.
Maybe there's a misunderstanding: I'm talking about the CASECHARS,
NOT-CASECHARS, and OTHERCHARS parts of the dictionary data in
ispell-dictionary-alist.
Each dictionary can (and many do) use some of the punctuation
characters in the words it can handle. A notable example is the
apostrophe ' in English, used for the various suffixes that spellers
support; similar features exist in other languages, but with possibly
different punctuation characters. Ispell.el must match that by using
the speller's notion of a word, which must be independent of the
current major mode's idea of what a word is. This is where these
character sets come into play, and I really cannot see how can
ispell.el work well without using them as it does now.
So we do need this information. If Enchant doesn't provide it, we
could still use the same technique as with Aspell and Hunspell,
provided that we can figure out which back end(s) is/are used by
Enchant. Is that doable?
Ispell.el also supports spell-checking by words, in which case the
above is not useful, because we need to figure out what is a word.
Moreover, even when we send entire lines to the speller, we want to
skip lines that include only non-word characters.
Just look at the callers of the above-mentioned accessor functions, and you will see
how we use them.
Hunspell is the most modern and sophisticated speller, we certainly
don't want to degrade it.
Also, Aspell uses the dictionaries at least
for some of this info, see the function I pointed to above.
Bottom line, this information cannot be thrown away or ignored. It is
important for correctly interfacing with a dictionary and for doing
TRT as the users expect. Any modern speller program would benefit
from it, and therefore we should strive to provide such information to
ispell.el whenever we possibly can.