Tamago 4 (Emacs-20.5 以降で動作する多言語入力フロントエンド) の日本語ローマ字・仮名変換部分を、西村さんが Egg V3 用に開発したegg-mixと同様に、日本語と半角アルファベットの入力モード切り替えが必要ないように拡張する Elisp プログラムです。名前が卵料理ではないのがちょっとアレげではありますが。
最低限、Tamago 4 が動くことが条件になります。Tamago 4 はTamago Project のページなどから入手できます。また、いくつかパッチが出ているので、少なくともtamago-4.0.6-20000605.patchが当たったTamagoを使ってください。
動作確認は
・Emacs-22.1 + Tamago-CVS (at Jul 30 2002) + Wnn7
で行っています。
(Windows98SE + NTemacs20.6 + Tamago-4.0.6 + 20000605patch + Wnn6 や Meadow でも動くらしいです)
/usr/local/lib/wnn6 → /usr/lib/wnn7 というシンボリックリンクを張り、Tamago 4 のスタートアップファイル (~/.eggrc) の wnn6-jerver-setup を Wnn7 に付属のスタートアップの内容でオーバーライドすると、そのまま Tamago 4 から Wnn7 を利用できます。(一部要修正)
CVS の Tamago 4 には Wnn7 に対応した eggrc が付属しているようです。
Emacs-21.xだと、そのままではTamagoの環境下でisearchに日本語を入力できません。山内千里さんのページにある修正用コードを読み込むようにすれば解消します。
GPLとします。
設定は、~/.emacs.el (または ~/.emacs) に書いておきます。基本的には、個人設定用の変数を好みに合わせて変更します。
参考までに、うちで使っている設定です。egg-remix.el は ~/lisp/egg-remix/egg-remix.el であるものとします。
| 注 釈 | |
|---|---|
| (setq load-path (cons (expand-file-name "~/lisp/egg-remix") load-path)) | ;; load-path に egg-remix のある PATH を追加する |
| (setq wnn-jserver '("adelie" "gentoo")) | ;; jserver が動いているホストを指定する |
| (setq egg-mode-preference "remix") | ;; Tamago の入力モードを Egg ReMix にする |
| (make-face 'remix-face) | ;; 新しいfaceをつくる |
| (set-face-foreground 'remix-face "blue") | ;; faceの前景色をblueにする |
| (set-face-background 'remix-face "lightskyblue") | ;; faceの背景色をlightskyblueにする |
| (set-face-underline 'remix-face t) | ;; 下線つきのfaceにする |
| (setq remix-fence-face 'remix-face) | ;; remixで使うfaceに設定する |
| (setq its-enable-fullwidth-alphabet nil) | ;; 全角アルファベットをフェンスで入力しない |
| (setq egg-conversion-wrap-select t) | ;; 変換モードで候補をサイクリックに選べるようにする |
| (load "egg-remix") | ;; Egg ReMix をロードする |
以上の設定をした上でEmacsを起動すれば、普通にC-\で日本語入力モードに移行するとEgg ReMixを使った入力になっています。
| 変数名 | 機能 | デフォルト値 | 設定値 | 効果 |
|---|---|---|---|---|
remix-quiet |
メッセージを表示するときに ding を抑制するかどうかのフラグ | nil |
non-nil |
dingしない |
nil |
dingする | |||
remix-remix-fence |
Egg ReMixを読込んだときに、フェンスの外観パラメータをEgg ReMixで指定したもので初期化するかどうかのフラグ(読込む前に設定する) | t |
non-nil |
初期化する |
nil |
初期化しない | |||
remix-fence-invisible |
フェンスの両端を表示しないかどうかのフラグ(remix-remix-fenceがnon-nilのとき有効) |
t |
non-nil |
表示しない |
nil |
表示する | |||
remix-fence-open |
フェンスの左側に使う文字列(remix-remix-fenceがnon-nilのとき有効) |
"|" |
文字列 |
その文字列を使う |
remix-fence-continue |
連続して変換するときにフェンスの左側に使う文字列(remix-remix-fenceがnon-nilのとき有効) |
"+" |
文字列 |
その文字列を使う |
remix-fence-close |
フェンスの右側に使う文字列(remix-remix-fenceがnon-nilのとき有効) |
"|" |
文字列 |
その文字列を使う |
remix-fence-face |
フェンスの表示に使うface(its-fence-faceやegg-conversoin-faceと同じ形式) |
'underline |
face |
そのfaceを使う |
remix-sysdict |
入力が英単語かどうかを調べるためにシステムが使う辞書(参照のみ)のPATHのリスト (一行一単語形式のテキストファイルであればいい) |
'("/usr/dict/words") |
PATHのリスト |
読み込めた辞書を参照する |
nil |
システム辞書は使わない | |||
remix-sysdict-length |
システム辞書から検索する単語の最小文字数 | 2 | 文字数 | これより短い単語は辞書を引かない |
remix-usrdict |
PATH |
(expand-file-name "~/.remix-freq") |
PATH |
既に存在すれば起動時に読み込む |
nil |
ユーザ辞書は使わない | |||
remix-usrdict-alist-file |
alist形式で保存するユーザ辞書ファイルのPATH。このファイルが存在すれば、remix-userdictで指定したファイルは参照しない |
(expand-file-name "~/.remix-freq.alist") |
PATH |
既に存在すれば起動時に読み込む |
remix-usrdict-alist-file-backup |
ユーザ辞書の保存時に古いものをバックアップするかどうかのフラグ | nil |
non-nil |
バックアップする |
nil |
バックアップしない | |||
remix-usrdict-file-mode |
ユーザ辞書の保存時に設定するファイルモード | nil |
数値または8進数文字列 | 指定したモードに変更する |
nil |
ファイルモードを変更しない | |||
remix-auto-add-entry |
システム辞書の単語がユーザ辞書になかったときに自動的に追加するかどうかのフラグ | t |
non-nil |
追加する |
nil |
追加しない | |||
remix-use-overlay |
フェンスのfaceをoverlayで表示するかどうかのフラグ | 10 |
正の整数 |
overlayのpriority |
nil |
text-propertyで表示 | |||
egg-mode-preference |
ローマ字→かな変換に使うモード | t |
"egg"またはt |
標準モード |
"mlh"またはnil |
mlhモード | |||
"remix" |
Egg ReMixモード | |||
remix-egg-preinit-hook |
Tamagoの初期化前に呼ぶフック | nil |
フック関数のリスト | Tamagoの初期化前に実行 |
remix-setup-hook |
Egg ReMixの初期化時に呼ぶフック | nil |
フック関数のリスト | remix-setup内で実行 |
その他のローマ字かな変換ルールなどはTamagoのものと同じです。したがって、入力ルールを変更したい場合は、remix-egg-preinit-hookに登録する関数などでits-hira-mapのエントリを設定することになります。
Egg ReMixでは、egg-mixと同様に入力モードのインジケータ(モードラインの「あ」の部分)を使って内部状態を表示します。
| 表示 | 状態 |
|---|---|
| あ | 待機状態(日本語入力on) |
| あ | 完全なローマ字綴り |
| ◇ | 状態が確定していない |
| ◆ | ローマ字綴りではない |
| ☆ | 辞書でローマ字綴りになっている |
| ★ | 辞書でローマ字綴りではなくなっている |
| ▽ | フェンスを編集している |
| キー | 機能 |
|---|---|
C-a |
フェンスの先頭へ移動する |
C-b |
フェンス内で一文字分後退する |
C-c |
入力をキャンセルしてフェンスを消去する |
C-d |
カーソル位置の文字を削除する |
C-e |
フェンスの末尾へ移動する |
C-f |
フェンス内で一文字分前進する |
C-h |
Egg ReMixモードのキーバインドを表示する |
C-k |
フェンス内のカーソル以降を消去する |
C-m |
フェンスを変換せずに確定する。Egg ReMixの状態がローマ字綴りでなければ入力したキー列で確定する |
C-r |
フェンスをローマ字綴りではないものとして確定する。Egg ReMixの状態がローマ字綴りであった場合はユーザ辞書にかなではないと登録する |
C-t |
フェンスの末尾にカーソルがある場合は最後の二文字を入れ替える。フェンスの途中にカーソルがある場合はカーソル位置とその前の文字を入れ替える |
C-w |
かなではないと辞書に登録されているローマ字綴りをフェンス内でかなに戻す。同時に辞書にかなであると登録する |
M-h |
フェンスをひらがなで確定する |
M-k |
フェンスをカタカナで確定する |
M-> |
フェンス内の半角英数記号を全角にして確定する |
[space] |
フェンスの状態がかなであれば変換モードに移行する。さもなければ入力したキー列で確定し、スペースを挿入する |
[return] |
フェンスを変換せずに確定する。Egg ReMixの状態がローマ字綴りでなければ入力したキー列で確定する |
[backspace] |
カーソルの手前の文字を削除する |
[delete] |
カーソル位置の文字を削除する |
[right] |
フェンス内で一文字分前進する |
[left] |
フェンス内で一文字分後退する |
ご意見、要望などは当然のことながら大歓迎です。
eggremix@extipl.jp