help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: slow ispell.el in 23.3 on Mac


From: gfisher
Subject: Re: slow ispell.el in 23.3 on Mac
Date: Sun, 24 Feb 2013 11:49:53 -0800 (PST)
User-agent: G2/1.0

On Thursday, July 28, 2011 9:17:39 PM UTC-7, Leo wrote:
> On 2011-07-28 11:20 +0800, Alley Stoughton wrote:
> > When running ispell.el in the GUI-version of GNU Emacs 23.3 on Mac OS
> > X
> 
> M-x report-emacs-bug
> 
> Leo


This has been a nagging problem for me for quite some time.  I kept hoping that
it would get fixed in an official release, but as of version 24.2 from
emacsformacosx.com, the problem persisted.

After digging around for a while, I found a reasonably good solution that makes
ispell run tolerably fast.  The solution is adding a parameter in a couple
calls of the function ispell-accept-output.  Specifically, in the 24.2 version
from emacsformacos.com, the changes are on lines 1709 and 3177 of

   Emacs.app/Contents/Resources/lisp/textmodes/ispell.el

On those lines, change the calls from

    (ispell-accept-output)

to

    (ispell-accept-output 0)   


With these changes, ispell-buffer runs slightly slower than in Emacs Version 22
and earlier, but still tolerably fast enough.

There are four other calls to ispell-accept-output that take a parameter value
of 3, which I changed to 0.1.  These changes had no apparent effect on the
speed of ispell-buffer, presumably because they're not in the line-by-line
buffer loop.

The evident root of the problem is that unparameterized calls to
accept-process-output cause that function to wait some default amount of time.
This in turn causes a delay in the line-by-line processing that ispell-buffer
is doing.

The curious thing about this problem has always been that ispell runs fine in
Emacs 23+ on Linux and other pure UNIX platforms.  It also runs fine in version
22 and earlier of Carbon Emacs.  The problem only began occurring in Version 23
of Emacs for Mac OS.

I've not dug further into the C code to figure out exactly what's going on.
For now, things work well enough.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]