この章で述べる emacs 上での tamago4 の設定は、個人的な好みの問題で、必ず しも万人に推奨される設定ではない。また、かなり高度な設定も含まれているの で、初心者は行う必要はない。
以下のカスタマイズでは、ユーザーが自分専用の emacs lisp プログラム をロードして、カスタマイズを行うので、最初に、その方法を書く。 load-path とは、例えば、~/.emacs などで、
(load "canna")
という記述があったときに、この canna というプログラム(実際には、 canna.elc または canna.elというファイル)を、どの directory から順番 に探すかを指定する変数である。emacs を立ち上げて、ESC-x describe-variable [Return] load-path で、確認することができる。
home directory の lisp directory を load-path に加えるためには、 ~/.emacs.el (ない場合は ~/.emacs) ファイルに、
(setq load-path (cons (expand-file-name "~/lisp/") load-path))
と書く。これで、~/lisp directory に自分専用の lisp プロ グラムを置いて、ロードできるようになった。
tamago4/emacs では、C-s や C-r での検索の際に、 日本語が入力できないバグがある。 tamago-isearch-fix.el を持ってき て、~/lisp directoryに置いて、 ~ /.emacs.el ファイルに
(load "tamago-isearch-fix") ; incremental search で日本語入力可能にと書けば、OK。これで、日本語での検索が出来ることが確かめられ たら、 tamago-isearch-fix.el を バイトコンパイル しておこう。
tamago4は、変換サーバーとして、cannaserver を利用できるだけなので、 ユーザーインターフェースは、egg そのものである。canna の持っている 部首入力や記号入力も使えない。 tamago4 でも canna の機能を使えるようにしている人がいる。 なお、このページ にある、tamago 4.0.6 に対するパッチの多くは、ports でインストールした場合には当たっているようである。 egg-canna.el を、~/lisp directoryに置いて、 ~.emacs.el ファイルに、
(add-hook 'canna-load-hook '(lambda () (load "egg-canna")))と書くと、canna の部首入力や記号入力が使えるようになる。また、 canna-extended-mode もメニューとしてはあるが、機能は使えないようで ある。
例えば、この文章もそうですが、計算機関係の文章や TeX や html のソー スファイルを書く場合には、日本語と英語(アルファベット)が混ざり、そ の度に、入力方式を切替えたりするのは、思考の妨げとなる。日本語入力 の ON/OFF をしないで、一時的にアルファベット入力に切替える方法も準 備されている (skk では "l"、tamago では "q") が、文字を入力する前に 余計なキーを押す必要があるので、思考が中断される。canna では、入力 した後で、↓(C-n) や ↑(C-p) で字種の変換ができるので、 入力する前 にキーを押すよりは負担は少ないが、tamago4/emacs では、実装されてい ない。
日本語とアルファベットが混ざりあった文章をスムーズに入力するために、 いくつかの便利な(?) lisp プログラムが公開されている。解説は、 こちら。
よく使われるもののひとつは、ゆでたまご( boiled-egg) と呼ばれるもので、 基本はアルファベット入力で、「かな」に変換したいところで、変換キー (default は、C-j)を押して、フェンスモードにする。元々は、egg/mule 用に開発され、canna/mule用( boiled-canna)、 tamago4/emacs用 boiling-egg)も存在する。
もうひとつよく使われるものは、 egg-mix と呼ばれるもので、日本語入力を基本として、 アルファベットだと判断した文字列は、 かなに変換せずに、アルファベットのまま確定するインターフェースである。 egg-mix は egg/mule 用に開発され、tamago4/emacs用のものは egg-remix と呼ばれる。 「ゆでたまご」の系列は、実際には使ったことがないのでわからないが、 egg-remix を使ったところ非常に便利で、現在は常用しているので、 ここで紹介する。
(setq egg-mode-preference "remix") (load "egg-remix")
と書く。最低限の記述は、これだけ。カスタマイズ用のパラメー タは、元のサイトを参照。
「私には emacs のカスタマイズは面倒だ。」
という文章を入力するのに、
watasiniha[Space][Return][Space]emacs[Space]no[Return] kasutamaizuhamenndouda.[Space][Return]とキーを打つ。ここで、emacs の入力で ``s'' を打った瞬間にフェンス内が、 ``えまc'' から ``emacs'' に変化することと、その後で、Spaceキーだけで、 ``emacs''が確定して Space が入力されることが、 egg-remix モードの特徴である。
``の''を入力した後で、[Return]で確定しているのは、 その後のかな漢字変換の効率を上げるためである。 変換サーバーである canna は、 文章の前の方から自立語を取り出すという 変換ロジッ ク をとっているので、 助詞から始まるような文章の変換は、まともにできない。 使ったことはないのでわからないが、 Wnn の jserver は、後方から単語を取り出して変換するらしい ので、 Wnn を変換サーバーに使えば、この問題は起きないのかもしれない。
``emacs''がフェンスモードでそのままアルファベットで表示されたのは、 そのままでは「ローマ字」として「かな」に変換できなかったからである。 ローマ字としても意味のある文字列をアルファベットに変換するためには、 C-r と押す。例えば、make と入力すると、フェンス内では、 ``まけ''となっているので、ここで C-r を押すと、``make'' に変わり、 Space キーで確定すると同時にスペースを挿入する。その後で、再度、 make と入力すると、今度は ``make'' のままになる。 これは、辞書ファイル (defaultでは ~/.remix-freq) に make をアルファベットであると登録したからである。 この後で、「負け」を入力したかったら、make と入力した後で C-w を押して、``まけ'' に戻してから、Spaceキーで変換する。C-wによって、 辞書ファイルに、make はローマ字であると登録し直す。
egg-remix に固有のキーバインドをまとめておく。egg-remix は、 フェンスモードでの挙動を制御しているだけなので、 漢字変換モードでは、通常の tamago4/emacs のキーバインド になる。
[Space] | フェンスの状態がかなであれば変換モードに移行する。さもな ければ入力したキー列で確定し、スペースを挿入する。 |
[Return] | フェンスを変換せずに確定する。 |
C-r | フェンスをアルファベットとして確定する。フェンスの状態 がかなであった場合はユーザ辞書にアルファベットと登録する。 |
C-w | アルファベットと辞書に登録されているローマ字綴りをフェンス内でかな に戻す。同時に辞書にかなであると登録する。 |
C-c | 入力をキャンセルしてフェンスを消去する。 |
C-t | フェンスの末尾にカーソルがある場合は最後の二文字を入れ替える。フェ ンスの途中にカーソルがある場合はカーソル位置とその前の文字を入れ 替える。 |
C-k | フェンス内のカーソル以降を消去する。 |
ESC-h | フェンスをひらがなで確定する。 |
ESC-k | フェンスをカタカナで確定する。 |
ESC-> | フェンス内の半角英数記号を全角にして確定する。 |
egg-remix モードを使ってみて不便だったのは、フェンス内がアルファベットの 状態から漢字に変換ができないことだった。長らく skk を使っていたので、TU → 東北大学、ws → ワークステーション というように、 読みに頭文字等を使った単語登録を利用してしたのだが、egg-remix だと、 フェンス内がアルファベットの時に Space キーを押すと、確定してスペースを 挿入してしまう。そこで、egg-remix.el を変更して、フェンス内が「かな」か 「アルファベット」かに関わらず、変換モードに移行する関数を、C-j に割り当 てた。 変更した egg-remix.el は、配布パッケージに入っている。 これで、アルファベットから、C-j を押すと、直接、漢字変換モードに飛ぶ。 これは、便利!!。