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

2020-02-23 07:56发布

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?

8条回答
可以哭但决不认输i
2楼-- · 2020-02-23 08:03

Here's a working solution:

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

Enjoy!

查看更多
混吃等死
3楼-- · 2020-02-23 08:10

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.

查看更多
SAY GOODBYE
4楼-- · 2020-02-23 08:13

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

[iMac ~]$ 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

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

There is a similar discussion of this here.

-lrm

查看更多
放荡不羁爱自由
5楼-- · 2020-02-23 08:14

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")

查看更多
The star\"
6楼-- · 2020-02-23 08:16

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.

查看更多
狗以群分
7楼-- · 2020-02-23 08:19

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.

查看更多
登录 后发表回答