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 が動かない
とても参考になりました。
osxがlionになったのを機にcarbon emacsからcocoa emacsに乗り換えてあれこれ設定(ddskkやらyatexやら)していた所で,非常に助かりました。ついでにemacsの半透明もやってしまいました。ありがとうございました。
ありがとうございました。お役に立ててよかったです。