Subject: Re: bug#26525: `sit-for' in Flyspell slows typing down, hogs 90% of CPU

From: Eli Zaretskii <[email-masked]>
Date: Mon, 17 Apr 2017 10:14:17 +0300

> From: Clément Pit-Claudel <[email-masked]>
> Date: Sat, 15 Apr 2017 16:33:56 -0400
> 
> The relevant piece of code seems to be this:
> 
>       (cond
>        ((get this-command 'flyspell-deplacement)
> 	(not (eq flyspell-previous-command this-command)))
>        ((get this-command 'flyspell-delayed)
> 	;; The current command is not delayed, that
> 	;; is that we must check the word now.
> 	(and (not unread-command-events)
> 	     (sit-for flyspell-delay)))
>        (t t)))
> 
> But the condition and the comment seem at odds, and it doesn't say much about why it calls `sit-for`.

I'm not quite sure what needs to be explained.  I think the doc string
of flyspell-delay and flyspell-default-delayed-commands tell the whole
story; if something is unclear there, please say what is unclear.

If you want to see this feature in action, turn on Flyspell, then type
something like "ssss", and then wait _without_ typing any non-word
character.  You will see that the mis-spelled word is marked only
after 3 sec, the default value of flyspell-delay.  Then contrast that
with the same word with a space typed after it.

IOW, this is a feature designed to avoid annoying users who type
slowly or make short breaks after typing only part of a word.