概要
国際会議の予稿を書いてて気がついたのだが,
CarbonEmacsで同梱されていた,ispellの現代版であるaspellが,CocoaEmacsには同梱されていない.なのでaspellを入れる.
cocoAspellなる.pkgもあるが/usr/localを作ってそこを汚すのが気にくわない.
なのでCarbonEmacsから持ってきたら動いた.
aspell導入の通常の手法
brewとかMacPortsとかには入っているので,どこから持ってくるのが一番楽.
cocoAspellなる,.pkg一つでインストールできるパッケージがあるので,それをインストールするのも非常に楽.
しかし,OSXで/usr/localを作られて汚されるのは,とにかく気にくわないのである!
ちなみに,自分の好み通りの場所に配置できるソースからのコンパイルは,Yosemiteではどう工夫しても通らなかった.
安藤は,OSごとホームディレクトリ以下にUtilsというディレクトリがあって,その中にbinやらetcやらlibやらがあり,自分が使うツールは,そこ全体をOSごとに分けてDropboxに突っ込んで,すべてのマシンで同期するという手法を使っている.
この方法を使うと,マシンを新規インストールしてもDropboxの同期だけが完了すれば(つまりネットにつないで放っておけば),ほぼ使える状態になるというメリットがある.
なので,マシンごとに管理しなければならないbrewやらMacPortsやら.pkgのインストールはすごく面倒臭く感じるのである.
解決法 - CarbonEmacsから持ってくる
銭谷版CarbonEmacsパッケージを持ってきて,バラすと,スタティックリンクでビルドされた実行ファイルと辞書が入っているので,それをそのまま自分のホームディレクトリ以下のUtils/binとUtils/libに突っ込んだら動いた.
実行ファイルと辞書を持ってくる
銭谷版CarbonEmacsの「Emacs.app/Contents/MacOS/bin」の中の,
- aspell
- aspell-import
- precat
- preunzip
- prezip
- prezip-bin
- pspell-config
- run-with-aspell
- word-list-compress
を,パスが通っているbinディレクトリ(ここでは$HOME/Utils/bin)に,コピー.
辞書ファイル「Emacs.app/Contents/Resources/lib」以下の「aspell-i386」ディレクトリを,任意の場所(ここでは$HOME/Utils/lib)にコピー.
ホームディレクトリ以下に「.aspell.conf」ファイルを作り(安藤はDropbox内に作ってシンボリックリンクだが),そこに
dict-dir /Users/daichi/Utils/lib/aspell-i386 lang en_US
と書く.
Emacsの設定
英語のみでいいなら,.emacsの中身は以下の通り.
(そうなんだよ,未だに.emacsなんだよ.さっさと.emacs.d/init.elに移らないと)
(add-to-list 'exec-path "/Users/daichi/Utils/bin") (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" "/Users/daichi/Util/lib/aspell-i386") nil iso-8859-1))) `((nil ,@default) ("english" ,@default)))) (eval-after-load "ispell" '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))
てな感じ.
これでマシンに依存せずにispellがEmacsから使えるようになった.
もちろんコマンドラインからaspellを叩いても使える.