0

After fixing ispell to work on a new machine running macOS (see previous question), I was surprised to see it listed as one of my processes, see the image:

enter image description here

As text:

Process.  PID.    Status. Buffer.    TTY.   Thread 
ispell    8262    run     --         --     Main   /opt/homebrew/bin/aspell -a -m -B --encoding=utf-8

ispell seems to be related to flyspell and I thought would be a "simple" mode. "Simply" storing a dictionary with the appropriate spelling and parsing text to find matches and misfits (indicating suggestions for the latter). I have no idea why it generates a process.

Other commands and modes do not gerate processes. I know stuff like CIDER does to watch live projects. I can't see the reason here.

Why do I have an ispell process running? Why is it necessary?

2
  • 2
    In my setup, I modified the library to run a new temporary process every time the aspell application is used (idle timer) because I don't want an aspell process running 24/7. I found certain sections in the code already set up for this; e.g., ispell-async-processp .... When I made a feature request to the Emacs team, Eli Z. explained that there is overhead each time aspell is launched and that it learns as it goes; e.g., words to ignore, etc. Eli Z. explained the efficiencies of having it run 24/7 and that the section of code I had zeroed in on was for systems unable to support it.
    – lawlist
    Sep 19, 2022 at 16:47
  • 1
    ispell.el calls an external program to do the checking. It looks sequentially for aspell, ispell, hunspell and enchant-2. See ispell-init-process and ispell-start-process for details.
    – NickD
    Sep 19, 2022 at 17:18

1 Answer 1

1

That is how ispell was originally designed. Programs that use ispell communicate with it over a pipe. The newer aspell can additionally be used as a library, which means that the aspell code runs inside the Emacs process. I am not sure if Emacs has ever been changed to use aspell that way, since that would be extra work for not much extra benefit.

4
  • Does every pipe generate a process? Is there a difference between an indefinite process (on-going process) and a task process (process is ended after task is done)? In this case, it is an ongoing process, right? Sep 19, 2022 at 17:28
  • 1
    A pipe connect two processes. Emacs sends words to ispell through the pipe and ispell sends back spelling corrections. I am not sure what you mean by a “task process” though. Usually “task” and “process” are synonymous. The screenshot you included in your question indicates that ispell is still running. How else would Emacs spellcheck things if ispell were not running?
    – db48x
    Sep 19, 2022 at 17:41
  • I guess the question is why the process doesn't exit but continues running. I think @lawlist's comment describes the tradeoffs well.
    – NickD
    Sep 19, 2022 at 19:47
  • I see. Thank you. Sep 19, 2022 at 22:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.