[Anthy-dev 928] Re: uim-skk の送り仮名の問題

Back to archive index

Etsushi Kato ekato****@ees*****
2004年 7月 16日 (金) 11:27:29 JST


加藤です。

On Thu, Jul 15, 2004 at 02:23:15AM +0900,
Jun Mukai <mukai****@jmuk*****> wrote:

> uim-skk の送り仮名機能のうち、子音が2つ連続していて後者が大文字の場合
> の挙動が ddskk と異なります。このため、末尾が「っ」で終わる送り仮名つ
> きの変換がうまくできません(xtuで明示的に与えなければなりません)。
> 
> 具体的には、たとえば「決して」を入力するとき、 ddskk では、
> ・KesShite → 「けっs」を検索。「決して」に変換される
> ・KeSshite → 「けs」を検索。「決っして」に変換される
> というような挙動の違いがなされています。

送り仮名を入れるときのみ s が "っ" になるように変更すれば良いと思いま
す。skk-append-residual-kana で行なっていることが参考になると思います。

とりあえずのハックなのですが、添付したパッチでもそのような挙動になるは
ずです。

s 以外に "っ" になって欲しいものがあるなら、パッチの中の、
skk-sokuon-rule に追加すればいいと思いますが、なんかありましたっけ?

-- 
Etsushi Kato
ekato****@ees*****
-------------- next part --------------
--- skk.scm.orig	Fri Jul 16 10:56:26 2004
+++ skk.scm	Fri Jul 16 10:58:19 2004
@@ -488,6 +488,29 @@
       (if residual-kana
 	  (skk-append-string sc residual-kana)))))
 
+(define skk-sokuon-rule
+  (append '(
+	    ((("s"). ())("っ" "ッ" "?"))
+	    )
+	   ja-rk-rule))
+
+(define skk-sokuon-rk-push-key-last!
+  (lambda (rkc srkc)
+    (let*
+	((s (rk-context-seq rkc))
+	 (rule (rk-context-rule srkc))
+	 (seq (rk-lib-find-seq (reverse s) rule)))
+      (rk-proc-end-seq rkc seq s)
+      )))
+
+(define skk-append-residual-kana-sokuon
+  (lambda (sc)
+    (let* ((rkc (skk-context-rk-context sc))
+	   (srkc (rk-context-new skk-sokuon-rule #t #f))
+	   (residual-kana (skk-sokuon-rk-push-key-last! rkc srkc)))
+      (if residual-kana
+	  (skk-append-string sc residual-kana)))))
+
 (define skk-begin-conversion
   (lambda (sc id)
     (let ((res))
@@ -904,7 +927,7 @@
 	     (set! key (to-lower-char key))
 	     (skk-context-set-okuri-head! sc
 					  (charcode->string key))
-	     (skk-append-residual-kana sc)
+	     (skk-append-residual-kana-sokuon sc)
 	     #t)
 	   #t)
        (if (skk-kana-toggle-key? key key-state)


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