Subject: bug#16800: 24.3; flyspell works slow on very short words at the end of big file

From: Eli Zaretskii <[email-masked]>
Date: Sat, 22 Feb 2014 15:10:02 +0200

> Date: Sat, 22 Feb 2014 16:44:13 +0400
> From: Aleksey Cherepanov <[email-masked]>
> Cc: Agustin Martin <[email-masked]>, [email-masked]
> 
> Also GNU coding standards say to avoid arbitrary limits (parts 2.1
> and 4.2).
> http://www.gnu.org/prep/standards/standards.html

This limit is not arbitrary.

> > > > I tried to patch flyspell-word-search-backward and
> > > > flyspell-word-search-forward functions from flyspell.el replacing
> > > > search-backward with word-search-backward and search-forward with
> > > > word-search-forward (perl -pe 's/\(search-/(word-search-/' ). It
> > > > solved the problem but I do not know what it broke.
> > 
> > And this doesn't change behavior?  See below.
> 
> No, it seems that my setup works the same. See below.

Your setup _might_ work the same, especially if you don't mix
different languages in the same buffer.  But in general, your change
does affect behavior.

> The difference is in word bounds. We are in trouble if flyspell's word
> on its ends does not have ends of emacs' word. If flyspell's word has
> ends of emacs' word on its ends and even contain them inside then we
> are ok (try to search "a b" over "aa bb a b aa bb"). So could ends of
> flyspell's word do not match with ends of emacs' word?

Yes, definitely.  See what flyspell-get-word does to find where the
word begins and where it ends.  Flyspell's "words" are
language-sensitive, whereas Emacs's words are not.