[Canna-dev 297] Re: Canna ML 過去ログより

Back to archive index

Ikumi Keita ikumi****@rever*****
2004年 3月 30日 (火) 04:59:00 JST


  井汲です。遅くなってしまい、すみません。

>> ■ SunOS 4.1 の cc によるコンパイルエラー
> 趣味でSunOS4とかNEWSとかNeXTとか動かしている人はいるかもしれませんが、gccくらい入れているでしょうし、「純正コンパイラを使いた 
> いんだ!」という人もツール一本で対応できるでしょう。

  はい、異存ないです。(だとすると OCHANGES.jp にある「・SunOS 4.1 のコ
ンパイラではねられる記述を取り除いた。」の項目は削除するか、何か補足説明
をつけといた方がいいかもしれませんね)

>> ■ 付属語辞書が、バイナリ形式からテキスト形式へ変更できない
> 手元で実験してみると、問題なくテキスト辞書になります。いじった覚えはないのですが。

  私がそそっかしかったようです。お騒がせしました。元のメールは「岩波辞書 
for Canna3.2」を3.5b2 で使いたい、という話で、suffix というのもそれに付
属のもののようですが、遡ってメールを読んでみると元発言者は最初「3.5β2の
dpbindic とcrxdicとcrfreqを利用して…接尾語の辞書はswd形式であるせいか,
正しくテキスト辞書に戻せず…」と書いています。
  ですから、
> 今さん> また、岩波辞書を一度 3.2 でテキストに戻して 3.5 でバイナリに
> 今さん> 変換するということでも利用できるかと思われます。(※岩波辞書
> 今さん> の版権/著作権にご注意下さい)

> ご忠告ありがとうございます.もし,その方法を使うときには注意します.
> この方法を用いるとき,suffixのような付属語辞書のバイナリ辞書をうまく
> テキスト辞書に戻すことができません.何か方法はありますでしょうか?
というのは、今さんが「3.2 を使え」と指示しているのにもかかわらず、以前の
「3.5b2での dpbindic その他でエラーになった」という経験を繰り返して語っ
ているだけのような気がします。
(3.2 で作られた suffix のバイナリ辞書が、3.5b2 で dpbindic しようとする
  とエラーになる、という現象は起こっても不思議ではない…と思い込んで書い
  ていますが、これって正しいでしょうか?)

  それから、バグ報告の追加です。1件は Canna ML の過去ログから、もう1件
は私が気づいた点です。

■ 単候補モードでの C-k(先頭一文字選択)がおかしい。
  [Canna 4736]より。元のメールのキー操作の記述は「C-a」の部分が「Ret」に
なっているのですが、多分書き間違いだと判断して修正しました。また、ちょっ
とわかりづらい点に補足を加えてあります。
> |わたしはとりです。|      [space]

> |私は鳥です。|            [C-k]
>  ^^^^
> |私鳥です。|              [C-f]
>  ^^
> |私鳥です。|              [space][C-a]
>    ^^^^^^^^
> |私酉です。|              [C-k][space]
>  ^^
> と入力していくと、画面が

> |私酉です。|
>  ^^
> 1.私 2.私 3.私

> となってしまいます。

井汲補足: この状態を「A」とします。状態 A には問題が2つあって、1つは
> この状態になってしまうと、確定後 undo で「読み」にもどしても
> 「私」が表示されたまま。|私とりです。| となる。
となることです。

> さらに

状態 A のもう1つの問題は
> |私酉です。|
>  ^^
> ここで「私」に対して [C-k] を実行すると、mule ごと core を
> 吐いてお亡くなりになってしまいます。
となることです。
  現在の emacs は当時の mule とちょっと違うのか、core は発生しません。代
わりに、私の環境では emacs が固まってしまい、強制終了するしかなくなって
しまいます。また、kinput2 だとセグメントエラーで落ちます。

■ romaji-yuusen & canna-do-function
  emcws で起きる問題です。
  romaji-yuusen を t にしている場合、読みモードで canna-do-function を呼
ぶと、指定した機能が実行されずローマ字かな変換が優先されてしまいます。
  例えば

(progn
  (canna-key-proc ?k)
  (canna-do-function canna-func-quit ?a)
  canna-henkan-string)

を評価すると返り値は "か" になります。canna-func-quit を
canna-func-{kakutei,henkan,backward} などに変えても結果は同じで、
canna-do-function の第1引数による機能指定は無視されて、第2引数の「a」
がキー入力として扱われローマ字かな変換に用いられていることがわかります。

  canna-do-function の第2引数は省略できるのですが、省略した場合
canna.c 内での

  if (NILP(ch)) {
    *buf = '@';
  }

という処理によって、「@」をキー入力したことにされてしまいます。このため、
例えば default.cbp を用いている場合、

(progn
  (canna-key-proc ?@)
  (canna-do-function canna-func-quit)
  canna-henkan-string)

を評価すると、「@@→全角空白」という変換ルールが働いて " " が返り値とな
ります。

  要するに、romaji-yuusen=t のとき、読みモードで

jrKanjiControl(0, KC_DO,  (char *)&ksv);

をすると、機能指定が無視されてしまうようなのですが、KC_DO では
romaji-yuusen を無視するようにはできないものでしょうか。(少なくとも、
kakutei や quit のような機能は、無視しないで実行してほしいのですが…)

							井汲 景太



Canna-dev メーリングリストの案内
Back to archive index