サーバ機 FreeBSD 8.0-RELEASE にインストールした Emacs 24.0.50 でもロシア語メールを書く必要が発生し,メールエージェント Mew, スペルチェッカ Aspell をセットアップした。前に書いたメモ『Meadow 3.01-dev, GNU Aspell 多言語環境(露・英・仏・独)』に従って Emacs - Aspell 環境を準備したのだが,flyspell-mode (入力の都度スペルチェックが自動で行われるモード) を起動すると,Error: The filter "nroff" does not exists なるエラーが出てスペルチェッカが使えない。
調べたところ,Aspell-0.60.6 では filter-mode がサポートされていて,例えば tex filter を使えば LaTeX の命令のスペルチェックをスキップしてくれるのだが,インストールの仕方によっては nroff などの filter が組込まれないらしい。そのくせ,これを要求しに行って,上記のエラーになったようである。
対策は各種フィルタを付加すること。FreeBSD 8.0-RELEASE で私が Aspell を再導入した場合では,./configure --enable-compile-in-filters で生成した Makefile で組込めば OK になった。
もし同じエラーが出てかつ再インストールが面倒なら,filter 使用設定を外す。すなわち,.emacs の Aspell 起動オプション設定に --mode=none(filter なし)を指定すればよい。以下のように書いておく。
(setq ispell-extra-args '("--sug-mode=ultra" "--encoding=UTF-8" "--mode=none"))
現在の Aspell にどんな filter がインストールされているかは,aspell dump filters とコマンド発行すれば確認できる。私の環境では当初 url filter しか組込まれていなかったが,再インストールで,email, html, sgml, context, url, nroff, tex, texinfo の各種フィルタが認識されるようになった。
Emacs 24.0.50 でメールを書くに際していまひとつ問題があった。fontset-standard で起動してもキリル文字で日本語フォント(要するに全角文字)が拾われて極めてみっともないのだ。なんて Emacs は面倒なんだ!
しようがないので,いちいち set-charset-priority (文字コードの優先順位), set-fontset-font (文字コードに応じたフォント設定) を指示しなければならなかった。フォント名(IPAGothic など)は,fc-list コマンドの出力からユーザの好みのものを指定する。備忘録として .emacs のその部分を掲載しておく。
;; ;; charset priority ;; (set-charset-priority 'cyrillic-iso8859-5 'greek-iso8859-7 'mule-unicode-0100-24ff 'japanese-jisx0208 ) ;; char width for Mew Summary ;;; iso 8859-5 (map-charset-chars (lambda (range ignore) (set-char-table-range char-width-table range 1)) 'cyrillic-iso8859-5) ;;; iso 8859-7 (map-charset-chars (lambda (range ignore) (set-char-table-range char-width-table range 1)) 'greek-iso8859-7) ;; ;; font face ;; - See output of fc-list command for fontname. ;; (set-face-attribute 'default nil :family "DejaVu Sans Mono" :height 100) ;; japanese (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("IPAGothic" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'katakana-jisx0201 '("IPAGothic" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("IPAGothic" . "iso10646-1")) ;; Unicode (set-fontset-font (frame-parameter nil 'font) 'mule-unicode-0100-24ff '("DejaVu Sans Mono" . "iso10646-1")) ;; cyrillic (set-fontset-font (frame-parameter nil 'font) 'cyrillic-iso8859-5 '("DejaVu Sans Mono" . "iso10646-1")) ;; greek (set-fontset-font (frame-parameter nil 'font) 'greek-iso8859-7 '("DejaVu Sans Mono" . "iso10646-1"))