emacs on mac os x, how to get spell check to work
Asked Answered
R

8

21

I'm moving from Windows to Mac, and I've spent the whole night trying to get emacs to work.

I've installed GNU emacs and simply copied over my Windows .emacs file, which seems to work ok, except for spell check. I installed cocoAspell and followed this setup instruction to add the path and change ispell to aspell, but when I run spell check, I got

Error: The file "/use/local/lib/aspell-0.60/english" can not be opened for reading.

and FlySpell does not work either.

It seems like it's looking at the wrong directory, but I already have

(setq ispell-program-name "aspell"
      ispell-dictionary "english"
      ispell-dictionary-alist
      (let ((default '("[A-Za-z]" "[^A-Za-z]" "[']" nil
                       ("-B" "-d" "english" "--dict-dir"
                        "/Library/Application Support/cocoAspell/aspell6-en-6.0-0")
                       nil iso-8859-1)))
        `((nil ,@default)
          ("english" ,@default))))

which points to the right dictionary directory "/Library/Application Support/cocoAspell/aspell6-en-6.0-0". I can't figure out why I got the error and how to fix it.


Update:

Now I have removed my GNU emacs and cocoAspell, and re-installed (and linked) emacs/aspell using homebrew as @katspaugh suggested. I removed the code shown above, leave only

(setq ispell-program-name "aspell")

Now when I run spell check, I got

Searching for program: No such file or directory, aspell

I have already linked aspell with brew link aspell, why it still cannot find it?

Remorseless answered 26/9, 2013 at 7:31 Comment(3)
Did the error message really say use/local? In that case you have a typo somewhere -- it should be usr/local.Segmental
If you're using CUA-mode and other Mac-ish/Windows-y features, you may want to consider Aquamacs instead of GNU Emacs. Among many other useful features, it also comes with aspell properly configured, and lets you use the OS X system spellchecker instead if you prefer.Coverup
See also: emacs.stackexchange.com/questions/33865/…Parallelism
R
29

Here's a working solution:

  • Install Homebrew
  • brew install emacs --with-cocoa --with-gnutls
  • brew install aspell
  • open -a Emacs
  • M-x ispell

Enjoy!

Rowney answered 26/9, 2013 at 10:53 Comment(12)
Use aspell rather then ispell.Weizmann
I see that aspell has better Unicode support. Need to check if the recipe above works the same way with aspell.Rowney
It should. Aspell provides the same interface as ispell, and both, ispell and flyspell, should pick it up automatically.Weizmann
Yep, it appears ispell and aspell can be used interchangeably. By the way, Homebrew, unfortunately, doesn't have any additional dictionary packages for neither of the two.Rowney
Thanks! Is this a separate emacs installation or does it just adds aspell to the GNU emacs I've already have?Remorseless
@LWZ, it's separate, so you'll have to delete the other Emacs and aspell.Rowney
@Rowney The dictionaries are included in the formulae themselves. Just take a look at their arguments, and select the ones you need, e.g. brew install aspell --with-lang-de.Weizmann
@Rowney By the way, install Emacs with brew install emacs --cocoa --srgb --with-gnu-tls. This improves color appearance, and enables encrypted network traffic for Emacs.Weizmann
@Rowney Now I've removed the other emacs and installed this one using your method, but when I run spell check I still got the exact same error as shown in OP.Remorseless
@Rowney I tried removing the code but emacs couldn't find aspell. I think it's because aspell didn't "link" properly (I don't know what it means). I got a warning when I reinstall aspell. Would you mind open a chat and help me with this?Remorseless
FYI, I ran this code and got a warning that emacs: --cocoa was deprecated; using --with-cocoa instead!Tomtoma
Adding languages now fails with invalid option: --with-lang-en. Install with brew install aspell.Cotto
I
12

I use aspell from Homebrew. Simply:

brew install aspell --with-lang-en

Then, make sure your brew bin directory is in your Emacs exec-path variable. If you use /usr/local as your brew prefix then it will just work since that path is included in exec-path by default. Otherwise you'll need this somewhere in your .emacs:

  (setq exec-path (append "/path/to/brew/bin" exec-path)))

You can also accomplish the same thing using the customize interface with "M-x customize-variable RET exec-path RET" and then using the gui to add a path.

This will work on any Emacs, including the one from Emacs for Mac OS X, the one from brew, or the system Emacs.

Ickes answered 13/2, 2014 at 8:44 Comment(1)
Adding languages now fails with invalid option: --with-lang-en. Install with brew install aspell.Cotto
C
4

I build on the answers by katspaugh, David Caldwell, and Ébe Isaac, and made it work with the latest versions.

Install aspell, for example with brew:

brew install aspell

brew symlinks to /usr/local/bin and you can verify the installation:

$ which aspell
/usr/local/bin/aspell

Now tell Emacs about this location, e.g. adding this line in ~/.emacs:

(setq ispell-program-name "/opt/local/bin/aspell")

Launch M-x ispell in a buffer and it works.

To install with ports, see other answers.

Cotto answered 4/3, 2019 at 7:54 Comment(0)
O
3

Here is a MacPorts solution to the problem. (Credits to this link)

$ sudo port install aspell

Then install one of aspell's dictionaries for the respective language support

$ sudo port install aspell-dict-en

Then add the following line to your init.el or .emacs file.

(setq ispell-program-name "/opt/local/bin/aspell")

It worked for me.

Note: "sudo ports install ispell" works as well, but it is not as efficient and flexible as aspell.

Objectify answered 4/5, 2015 at 4:17 Comment(0)
E
1

Making a symbolic link in /usr/bin on OS X 10.12 (Sierra) is not permitted or necessary (or a good idea).

$ sudo ln -s /usr/local/bin/ispell /usr/bin/ispell
ln: /usr/bin/ispell: Operation not permitted

I used that hack for years, but was finally forced to figure out the right solution when the last upgrade deleted it. I used homebrew to install ispell and apsell and would get which ever one I set in ~/.emacs with

$ cat ~/.emacs
(setq ispell-program-name "/usr/local/bin/aspell")

There is a similar discussion of this here.

Efficiency answered 12/11, 2016 at 3:45 Comment(0)
M
0

It also works if you use fink instead than home-brew. ispell will be in /sw/bin and the string to add to .emacs file will be:

(setq ispell-program-name "/sw/bin/ispell")

Mclin answered 7/8, 2015 at 16:2 Comment(0)
P
0

Installing aspell, and adding (setq ispell-program-name "/usr/local/bin/aspell") in the init.el does not work for me. I had to make a symbolic link sudo ln -s /usr/local/bin/aspell /usr/bin/ispell, then emacs flyspell-mode works OK.

Posturize answered 1/9, 2015 at 18:7 Comment(0)
G
0

Emacs installed with brew cask install emacs will come with a built in spell checker called m-x ispell.

You have to do two things to get this to work.

  1. brew install aspell or maybe brew install aspell --with-lang-en

  2. go to emacs and evaluate this function or better yet put it in your init file (setq ispell-program-name "/usr/local/bin/aspell")

Note: the location of aspell can be found using which aspell in macOS terminal which should be equal tot step 2. above.

Groggery answered 18/7, 2019 at 17:5 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.