MacのEmacsでスペルチェック(ispell)できない aspell

Pocket

Macを使い始めてすぐにEmacsは使い始めてたけど
あんまりコードかかなかったから気にならなかったんだけど
最近またコードを書き始めて気になってきたので
ようやくスペルチェック機能を直した。

関数名や変数名を決めるときに、英語を使うわけだけど
入力した英語のつづりあってるのかな?と思うことがある。

昔使ってたVine LinuxとかCentOSとかでは普通にispellという
スペルチェックができたので気にならなかった。

Macに変わってから同じように

M-$

とか

M-x ispell

と入力するんだけど

Searching for program: no such file or directory, ispell

と、ミニバッファで怒られる。

emacsのispell関連のプログラムが入っていない
わけではないみたい。

$locate ispell
...
/usr/share/emacs/22.1/lisp/textmodes/ispell.el.gz
/usr/share/emacs/22.1/lisp/textmodes/ispell.elc
...

もしかしてispellってコマンドかなぁと思って
portを探してみる。

$port search ispell
aspell @0.60.6 (textproc)
    Spell checker with better logic than ispell

ispell @3.3.02 (textproc, spelling)
    An interactive spelling checker for multiple languages

ispell-dict-it @2001 (textproc)
    Italian dictionary for ispell.

Found 3 ports.

なんかaspellってのがある。
すこし調べると今はispellよりaspellが使われてるみたい。

sudo port install aspell

【追記】
Homebrewを使用している人は、はてブでコメントしてくれた方のように下記コマンドでインストールするとよい。

brew install aspell --lang=en

【追記終わり】

aspellをインストールして
.emacsかiniti.elあたりにispellの代わりにaspellを使うことを設定する。

(setq ispell-program-name "aspell")

【追記】
環境によってはフルパスの方がよい場合がある。後述。

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

【追記終わり】

再度スペルチェック実行

Error: No word lists can be found for the language "ja_JP".

また、エラーが。。。
日本語のスペルなんてチェックしないんだけど。。。
環境変数を引き継いでいるようだけど、bashrcとかで
環境変数はあまりかえたくない。

~/.aspell.conf に指定すればよいようだ。

lang en_US

再度実行

Error: No word lists can be found for the language "en_US".

英語の辞書すらないと、、、
もう一度、MacPortsを確認すると辞書のパッケージがたくさん
あって、そのなかにaspell-dict-en もあった。

$port search aspell
...
aspell-dict-de @20030222-1 (textproc)
    German dictionary for aspell (current spelling rules)

aspell-dict-de-alt @2.1-1 (textproc)
    German dictionary for aspell (old spelling rules)

aspell-dict-el @0.50-3 (textproc)
    el dictionary for aspell

aspell-dict-en @7.1 (textproc)
    English dictionary for aspell
...

aspellの英語辞書をインストール

sudo port install aspell-dict-en
def initialize
....
end

もう一回、initializeのところにカーソルを移動して
M-$とすると

INITIALIZE is correct

ようやく動いた!

絶対間違えそうな平衡という単語を試してみる。

(0) equilibrium  (1) equitably  (2) equitable  (3) aquarium             
(4) equability  (5) acquirable  (6) equably  (7) curriculum             
(8) equable 
--  *Choices*  --  word: equiriblium  --  dict: default  --  prog: aspel

equiriblium

正解の候補を出してくれて、0キーを押すとちゃんと修正してくれる。

equilibrium

再度実行すると

EQUILIBRIUM is correct

これでひとまず設定完了。

以下余談

ここ数日はiTerm2上でつかってたので、これで問題なかったけど
アプリケーションとしてインストールしたEmacsを
Dockから立ち上げるとエラーがでた。

Searching for program: no such file or directory, aspell

どうも、PATHがうまく設定できていないらしく

(getenv "PATH")

で確かめてみると

"/usr/bin:/bin:/usr/sbin:/sbin"

これだけしかなかった。MacPortsでインストールすると
/opt/local/bin/aspell に入るのでPATHが通っていないわけだ。

さらに、コンソールからEmacsアプリを起動すると
問題はなかったのでますます環境変数が原因らしい。

open /Applications/Emacs.app

コンソールの環境変数PATHを引き継げば大丈夫
setenvでPATHを追加してみたけどうまくいかなかったので
しょうがないので、、

sudo ln -s /opt/local/bin/aspell /usr/bin/aspell

としてお茶を濁した。

PATHが通ってないならPATHを追加するか
PATHのあるところにあるようにするということで。

【追記】
フルパスをしてもよいみたいなので、こちらでやることにした。

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

【追記終わり】

とりあえず、これでEmacsでスペルチェックができる
環境がととのったのでよかった。

参考にさせていただいた記事
ispell で No word lists can be found for the language "ja_JP" – mooz deceives you

lifeLOG + REPOsitory: Cocoa Emacs で ispell が動かない

関連記事

Pocket

2 Comments

  1. とても参考になりました。
    osxがlionになったのを機にcarbon emacsからcocoa emacsに乗り換えてあれこれ設定(ddskkやらyatexやら)していた所で,非常に助かりました。ついでにemacsの半透明もやってしまいました。ありがとうございました。

  2. ありがとうございました。お役に立ててよかったです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です