Subject: bug#12768: 24.1; flyspell highlights words which ispell accepts

From: Eli Zaretskii <[email-masked]>
Date: Thu, 01 Nov 2012 16:44:01 +0200

> Date: Thu, 1 Nov 2012 01:10:11 +0100
> From: Agustin Martin <[email-masked]>
> Cc: [email-masked]
> 
> Really strange. With your steps I can even reproduce the problem with
> something as simple as
> 
> dnl -- D
> 
> If I add something before dnl  I still get the problem.
> 
> sdfdsfsdnl -- D
> 
> IIf I either break the double dash (no double dashes at all) or the
> dnl or remove the "D" after the dashes problem disappear
> 
> dfnl -- D
> dnl - - D
> dnl --
> 
> autotest-mode.el is a small file, but II  do not see any hint about
> what is happening here. Seems to do something strange with double
> dashes associated with dnl, but I am absolutely clueless, help
> welcome.

If you step through ispell-region, you will see that it goes bananas
because ispell-skip-region-alist has "--+" as part of it, which
matches the dashes between "dnl" and the text of the comment.  What
ispell-region does is remove the dashes, and then _prepend_ "dnl"
(because it's a comment-start string).  The result is that we send
something like "^dnl FOO" to the speller, and the character positions
get screwed up, because the characters between "dnl" and "FOO" were
removed.

FWIW, I really don't understand why ispell.el removes patterns that
pertain to email messages from buffers that have nothing to do with
mail-mode or its derivatives.

> Dirty workaround in the meantime, avoid double dashes and try something like
> 
> dnl - - - - Hi, whatever I want to add here
> 
> But I really wonder what is happening here.

See above.  A single dash doesn't get removed, so the workaround works
around.

Btw, WIBNI ispell.el had a debug option, which, if set, would collect
in a special buffer everything we send to the speller and its
responses.  I find myself adding '(message "sent %s" strin)'
etc. every time I need to debug the communications between ispell.el
and the speller program.  WDYT?