Etsushi Kato
ekato****@ees*****
2004年 7月 17日 (土) 10:59:53 JST
加藤です。 もう一度向井さんの考えを試してみました。 On Fri, Jul 16, 2004 at 10:57:01PM +0900, Jun Mukai <mukai****@jmuk*****> wrote: > 私も residual-kana を利用するのは考えていたのですが、ルールを追加する > のではなく、「今入力したキーが子音の場合、そのキーを(送り仮名ではなく) > 変換対象の方のローマ字変換前のもの(rkc?)に追加してから residual-kana > を実行する」という構造の方が簡単に行く気がします。 > > この場合、 > ・末尾が (子音 . 子音) の場合 → 同じキーな場合は「っ」が入る。さもな > ければルールにマッチしないので無視するだけ > ・末尾が (母音 . 子音) の場合 → 母音はもうひらがなになっているはず。 > 子音は residual-kana で消されるので問題なし > > となり、意図した動作が実現できるように思います。 すばらしいアイデアです。 以下のパッチで向井さんの意図どおり動きました。 田畑さん、こちらをコミットしていただけたらと思いますが、shiin-char? は 名前を変えて頂いてかまいませんし、もし skk 以外で使うことがあるなら、 util.scm に入れて頂いてもかまいません。 -- Etsushi Kato ekato****@ees***** -------------- next part -------------- --- skk.scm.orig Thu Jul 15 11:14:28 2004 +++ skk.scm Sat Jul 17 10:50:56 2004 @@ -834,6 +834,16 @@ (skk-get-string sc res kana) #f)))) +(define shiin-char? + (lambda (c) + (and (alphabet-char? c) + (and + (not (= c 97)) + (not (= c 105)) + (not (= c 117)) + (not (= c 101)) + (not (= c 111)))))) + (define skk-proc-state-kanji (lambda (c key key-state) (let* ((sc (skk-current-context c)) @@ -904,6 +914,16 @@ (set! key (to-lower-char key)) (skk-context-set-okuri-head! sc (charcode->string key)) + (if (shiin-char? key) + (begin + (set! res + (rk-push-key! rkc (charcode->string key))) + (if res + (skk-context-set-head! sc + (cons + res + (skk-context-head sc)))) + )) (skk-append-residual-kana sc) #t) #t)