● このtar ballに含まれるパッチは、大きく分けて2つあります。 (1) Mule-2.3-19.34.patch、takana.tar.gzは, 片山 善夫 (株)PFU 研究所 第4研究室 さんが作成されたmule2.3(based on emacs 19.34)のfixおよび拡張です.これ らの説明は、次の節にあります。さらに、これに関連してextra.patchも含まれ ています(注意2参照)。 (2) 展開後にできるディレクトリmewには、mew-1.93b52.tar.gz (http://www.mew.org) に含まれていたパッチcanna.el-19.34.patch、 egg.el-19.34.patch、ドキュメント00readme.jis、および、(1)のパッチを当て た後ではegg.el-19.34.patchでは正しく動作しないので、片山さんにお願いして egg.el-19.34.patchを作り直して頂いたegg.el-19.34.patch-for_katayamaがあ ります。結局、canna.el-19.34.patch、egg.el-19.34.patch-for_katayamaの2つ を当てることになります。このら2つのパッチは、Mew バージョン 1.93b52以降 を使うときに必要なもので、これらを当てないとヘッダ部分(Subject:など}に 日本語を入力できません。詳細は00readme.jisをお読み下さい。 (3) (2)のパッチ(mew付属のパッチegg.el-19.34.patchまたは片山さんが作り直 して頂いたegg.el-19.34.patch-for_katayamaいずれでも)を当てるとsj3が動作 しなくなります。そこで、片山さんにお願いして、sj3も動作できるためのパッ チsj3-egg.el.patchを格納しています。なお、このパッチを作ってくださる際に、 sj3-egg.el の henkan-mode-map に [left] 等の X Window System のキーイベ ントが定義されていなかったことに気付かれ、wnn-egg.el と同様の定義を追加 してくださっています。 ● 下記はtakana.tar.gzに対する説明です.片山さんがNetNewsに投稿された記 事[Message-ID: ]から抜粋しまし た.ただし、この説明はmule-2.3 (based on emacs 19.28)に対するものです。 ----------------------- ここから ----------------------------------------- 片山@PFUです。 wnn での中・韓国語入力に不備や不満があるので、egg の修正を行なっ てみました。 egg は sj3 でも使われていますので、sj3 に影響しないようにしたつ もりですが、こちらで sj3 サーバーが動いていませんので、sj3 有り での configure は、make 及び変換サーバーを呼びに行くところまでの 動作しか確認できていません。 インストールは Mule-2.3 (emacs 19.28) のソースディレクトリーの下 で展開し、 patch < patch を実行して、Mule を make し直して下さい。 修正点は以下の通りです。 1. its:select-mode-from-menu のバグ 以前にも投稿しましたが、its:select-mode-from-menu を行なっている 時に keyboard-quit を行なうと、its:*current-map* が破壊されるこ とがあります。() menu:select-from-menu の結果を一時変数に代入することにより対処し ています。本来なら menu:select-from-menu を修正すべきだとは思い ます。 2. henkan-region、gyaku-henkan-region のバグ henkan-region、gyaku-henkan-region で空のリージョンを指定すると、 それ以降漢字変換を行なわなくなります。 wnn-server-henkan-begin の関数値(文節数)が 0 の時、変換モード に入らないにもかかわらず egg:henkan-mode-in-use を t にして終了 するのが原因です。 3. 入力モード(PinYin/roma-kana)と変換サーバーの不一致 (set-primary-environment 'chinese) を行なうと、ピン音入力、かな 漢字変換(jserver)となります。 set-primary-environment で its:*current-map* の default-value を ピン音入力に設定しているので、デフォールトがピン音入力になるので すが、wnn-server-type がそのままなので、jserver を呼んでしまいま す。 また、バッファーが作られてから1度も its:select-XXX 等を行なって いないと、漢字変換を行なった後でも、set-primary-environment によっ て入力モードが変わってしまいます。 set-primary-environment で wnn-server-type も default-value を設 定しておき、フェンスモードに入る時には its:*current-map* と wnn-server-type に代入が行なわれるようにしました。 4. ピン音入力で軽声を入力できない 軽声の定義文字列は "an" のような形しかなく、ピン音表記で隔音符号 や空白が入る場合(…an'ge… 等)の入力ができない。 #“特殊文字を入力し、それを消し、続きを入力”とすれば可能ですが… これの解決のため、"an " のように空白を含めた形の定義を追加しまし た。この副作用として、space で漢字変換を行なう場合は、2回入力す る必要があります。 5. ハングル文字入力の定義ミス ハングル文字入力の定義ミス(洩れ 2文字、誤定義 19文字)の修正。 (以上バグ修正) 6. PinYin 入力への切替が C-x C-k m しかない 7. 全角中国語文字入力モードがない これらは、基本的には中国語全角入力モードと its:select-XXX を追加 して、適当なキーにアサインすればいいのですが、そうすると、 フェンスモード中に平仮名とピン音が混在 という状態が起こり得るようになります。この状態では、正しい漢字変 換を行なうことができません。 これを避ける為に、fence-mode-map を buffer-local にして、変換サー バー毎に切替え、フェンスモード中では同一言語内のモード切替だけに するようにしました。 8. 中国語文字の句読点が入力できない its/pinyin.el に cuum で定義されている特殊文字等を追加しました。 9. ピン音入力中に全角/半角英数字一時入力ができない its/pinyin.el に 平仮名入力時と同様に一時入力モードを追加しまし た。 6 〜 9 については、韓国語入力も同様の拡張を行ないました。中国語、 韓国語関連のキーアサインは次の通りです。 C-x C-k J its:select-jeonkak-upcase 韓国語全角大文字 C-x C-k j its:select-jeonkak-downcase 韓国語全角小文字 C-x C-k H its:select-hangul ハングル C-x C-k C-u its:select-quanjiao-upcase 中国語全角大文字 C-x C-k C-d its:select-quanjiao-downcase 中国語全角小文字 C-x C-k C-z its:select-zhuyin 注音 C-x C-k C-e its:select-erpin 二ピン C-x C-k C-p its:select-pinyin ピン音 ※「二ピン」は Wnn 4.2 の 2P_ErPin を参照して作りました フェンスモード(中国語) ESC B its:select-upcase ESC Q its:select-quanjiao-upcase ESC b its:select-downcase ESC e its:select-erpin ESC p its:select-pinyin ESC q its:select-quanjiao-downcase ESC z its:select-zhuyin Q 全角一時入力モード B 半角一時入力モード フェンスモード(韓国語) ESC B its:select-upcase ESC H its:select-hangul ESC J its:select-jeonkak-upcase ESC b its:select-downcase ESC j its:select-jeonkak-downcase J 全角一時入力モード B 半角一時入力モード 10. its/Chinese.el、its/Japanese.el、its/Korean.el の追加 入力モードの増加により its/*.el が増えましたので、mule-init.el が繁雑になるのを避ける為に、これらのファイルを取り込めば済むよう にしました。 11. egg.el/wnn-egg.el からモード名("roma-kana" 等)の追放 入力モードの追加/変更を容易にする為、モード名を直接記述する関数 は its:select-XXX に限定し、これらの定義を its/*.el へ移動しまし た。 これにともない、mule-map、fence-mode-map に its:select-XXX をア サインする部分も、its/*.el に移動しました。 12. その他 変更は lisp の範囲に留めるつもりでしたが、定義し直した関数が多過 ぎた為か、dump に必要な PURESIZE を増やす必要が生じました。dump した後の余裕がオリジナルと同じ程度になるように 4000 ほど増やして あります。(実際には 1000 増やせば dump できます) なお、mule-init.el をオリジナルと同様に wnn による韓国語入力をコ メントアウトしますと、PURESIZE を増やさなくても dump できます。 -------------------------- ここまで --------------------------------- (注意1) 上記説明文中で,sj3に対する動作確認ができてないと書かれていますが,ほと んどテストしてませんが「きょうのてんきははれです」くらいは変換できました. (注意2)本FreeBSDのportではtakana.tar.gzに含まれるfixおよび拡張を行ない ますが,そうするとmule本体の大きさが1MB以上増えます.バイナリの大きさを 抑えるために,./lisp/mule-init.elと./lisp/its/Chinese.elの一部をコメント アウトするようにしました.それがextra.patchです。この変更によってmuleの 機能が低くなりますが,$MULE/site-lisp/site-start.el を用いて,その機能を 復活させるようにしてあります. /usr/ports/editors/mule-common/files/site-start.el.tmpl参照. ● 下記はMule-2.3-19.34.patchに対する説明です.片山さんから頂いたメール の抜粋です. -------------------------- ここから --------------------------------- 各変更点について、簡単に説明しておきます。 lisp/quail/hangul.el quail のハングル入力のバグの修正。 src/term.c -nw で立上げた時、ファンクションキー番号を間違えるバグの修正。 src/coding.c ISO-2022 encoding 関連のバグの修正。 -------------------------- ここまで --------------------------------- 最後に,片山さんには多くの助けを頂きました.本当に感謝しております. 田岡 智志 広島大学工学部第二類回路システム工学 taoka@infonets.hiroshima-u.ac.jp