misima 旧字・旧仮名遣い変換の Tomcat7 開発環境を整備したついでに,misima を 多言語エディタ GNU Emacs 24 (Version 24.3, 2013.3.11) から利用する Emacs Lisp も入れ込んだ。misima は現在では Web アプリケーションとして限定公開するだけだが,私自身はまったくこれを使わず,もっぱら Emacs 上から misima プログラムを呼び出して変換操作をする。
misima Emacs Lisp: misima.
(defvar misima-path "/usr/local/bin/misima" "Path for programm misima. Default: /usr/local/bin/misima") (defvar misima-rc "$HOME/.misimarc" "Path for misima rcfile. Default: $HOME/.misimarc") (set-default-coding-systems 'utf-8) ;; リージョンを旧字・旧仮名遣い・用字用語変換し Unicode 文字で出力 (defun misima-ucs-region (start end) "Replace UTF-8 characters of specified region by old orthography. (UCS)" (interactive "r") (call-process-region start end misima-path t (list t nil) nil ;; delete(t) destination(list) display(nil) "-ykitq" "-s" "c" "-r" ;; misima 変換オプション misima-rc) ) ;; 中略(その他関数の記述) (provide 'misima)
call-process-region の書式は次のとおりである。
call-process-region start end program &optional delete destination display &rest args
ここで,
- start end: リージョンの開始点及び終了点
- program: コールするプログラム
- delete*: nil 以外を指定するとリージョンを削除
- destination*: 出力先 - t: カーソル前挿入; nil: 破棄; 文字列: バッファ
- display*: nil 以外を指定すると挿入後バッファを再表示
- &rest args: これ以降はプログラムへ渡す引数
(* 付加オプションは任意)
misima-ucs-region 関数では destination を (list t nil) とリスト指定しており,この場合,標準出力をカーソル前に挿入し(ひとつめの t),標準エラー出力を破棄する(ふたつめの nil)ことを意味する。misima.
注意すべきは,プログラムのコマンドライン引数の指定において文字列をダブルクォーテーションで括るのだが空白文字がある場合は個別に空白文字で分けて指定しなければならないこと。つまり,上記例でいえば,通常のコマンドライン引数は "-ykitq -s c -r rcfile" なのだが,
Mavericks Emacs-24 で misima.
上記 Emacs Lisp では misima のエラー出力を破棄しているので,それをファイル出力に変えて(つまり destination を (list t "error.
(setenv "CHASENRC" "/opt/local/etc/chasen/chasenrc-ipadic-utf8")
もしくは UTF-8 用の chasenrc を $HOME/.chasenrc にコピーするのでもよい。
cp /opt/local/etc/chasen/chasenrc-ipadic-utf8 ~/.chasenrc
変換前: リージョン選択して misima-ucs-region 関数を実行
変換後: リージョンが置換された
Emacs Lisp の解説はインターネットリソース上にもたくさん記事がある。けれども,私は対象をきちんと理解しようとすると冊子体で勉強しないとダメなほうである。以下の Emacs Lisp リファレンスマニュアルは Emacs の作者 Richard Stallman が関わったもっとも信頼できる参考書である。Emacs のバージョンは古びてしまったが,Emacs Lisp 言語そのものはほとんど変わらない。