Revision: 6566
Author: ek.kato
Date: Thu Jul 22 23:32:15 2010
Log: * scm/wnn.scm
* scm/social-ime.scm
* scm/canna.scm
* scm/ajax-ime.scm
* scm/anthy.scm
* scm/yahoo-jp.scm
* scm/mana.scm
  - Port changes of anthy-utf8.scm in r6565.

http://code.google.com/p/uim/source/detail?r=6566

Modified:
 /trunk/scm/ajax-ime.scm
 /trunk/scm/anthy.scm
 /trunk/scm/canna.scm
 /trunk/scm/mana.scm
 /trunk/scm/sj3.scm
 /trunk/scm/social-ime.scm
 /trunk/scm/wnn.scm
 /trunk/scm/yahoo-jp.scm

=======================================
--- /trunk/scm/ajax-ime.scm     Wed Jul 21 01:35:01 2010
+++ /trunk/scm/ajax-ime.scm     Thu Jul 22 23:32:15 2010
@@ -1295,9 +1295,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))))

       (if (ajax-ime-context-alnum ac)
           (let ((key-str (charcode->string key))
@@ -1307,9 +1311,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))
            (ustr-insert-elem! preconv-str
                               (if (= (ajax-ime-context-alnum-type ac)
                                      ajax-ime-type-halfwidth-alnum)
@@ -1333,10 +1341,20 @@
                      (ustr-insert-elem! preconv-str res))
                  (if (and next-pend
                           (not (string=? next-pend "")))
-                     (ustr-insert-elem! raw-str pend)
+                     (ustr-insert-seq! raw-str
+                                        (reverse (string-to-list pend)))
                      (if (list? (car res))
                          (begin
-                           (ustr-insert-elem! raw-str pend)
+                            (if (member pend
+                                        (map car
+                                             ja-consonant-sylable-table))
+                              ;; treat consonant having more than one
+                              ;; charactear as one raw-str in this case
+                              (ustr-insert-elem! raw-str pend)
+                              (ustr-insert-elem! raw-str (reverse
+                                                           (string-to-list
+                                                             pend))))
+                            ;; assume key-str as a vowel
                            (ustr-insert-elem! raw-str key-str))
                          (ustr-insert-elem!
                           raw-str
@@ -1447,8 +1465,10 @@
           (left-str (ustr-former-seq raw-str)))
      (append left-str
             (if residual-kana
-                (list pending)
-                '())
+               (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                (list pending))
+               '())
              right-str))))

 (define ajax-ime-get-raw-candidate
@@ -1473,7 +1493,9 @@
            (if (member (car unconv) preconv)
                (let ((start (list-seq-contained? preconv unconv))
                      (len (length unconv)))
-                 (if start
+                 (if (and
+                        start
+ (= (length raw-str) (length preconv))) ;; sanity check
                      (ajax-ime-make-raw-string
                       (reverse (sublist-rel raw-str start len))
                       (if (or
=======================================
--- /trunk/scm/anthy.scm        Wed Jul 21 01:35:01 2010
+++ /trunk/scm/anthy.scm        Thu Jul 22 23:32:15 2010
@@ -1281,9 +1281,13 @@
              (if residual-kana
                  (begin
                     (if (list? (car residual-kana))
-                      (ustr-insert-seq! preconv-str residual-kana)
-                      (ustr-insert-elem! preconv-str residual-kana))
-                   (ustr-insert-elem! raw-str pend)))))
+                      (begin
+                        (ustr-insert-seq! preconv-str residual-kana)
+                        (ustr-insert-seq! raw-str (reverse
+ (string-to-list pend))))
+                      (begin
+                        (ustr-insert-elem! preconv-str residual-kana)
+                        (ustr-insert-elem! raw-str pend)))))))

        (if (anthy-context-alnum ac)
            (let ((key-str (if (symbol? key)
@@ -1297,9 +1301,13 @@
              (if residual-kana
                  (begin
                     (if (list? (car residual-kana))
-                      (ustr-insert-seq! preconv-str residual-kana)
-                      (ustr-insert-elem! preconv-str residual-kana))
-                   (ustr-insert-elem! raw-str pend)))
+                      (begin
+                        (ustr-insert-seq! preconv-str residual-kana)
+                        (ustr-insert-seq! raw-str (reverse
+ (string-to-list pend))))
+                      (begin
+                        (ustr-insert-elem! preconv-str residual-kana)
+                        (ustr-insert-elem! raw-str pend)))))
              (ustr-insert-elem! preconv-str
                                 (if (= (anthy-context-alnum-type ac)
                                        anthy-type-halfwidth-alnum)
@@ -1326,10 +1334,20 @@
                        (ustr-insert-elem! preconv-str res))
                    (if (and next-pend
                             (not (string=? next-pend "")))
-                       (ustr-insert-elem! raw-str pend)
+                        (ustr-insert-seq! raw-str
+                                          (reverse (string-to-list pend)))
                        (if (list? (car res))
                            (begin
-                             (ustr-insert-elem! raw-str pend)
+                              (if (member pend
+                                          (map car
+ ja-consonant-syllable-table))
+                                ;; treat consonant having more than one
+                                ;; charactear as one raw-str in this case
+                                (ustr-insert-elem! raw-str pend)
+                                (ustr-insert-seq! raw-str (reverse
+                                                            (string-to-list
+                                                              pend))))
+                              ;; assume key-str as a vowel
                              (ustr-insert-elem!
                               raw-str (if (and (intern-key-symbol key-str)
                                                (symbol-bound?
@@ -1456,7 +1474,9 @@
           (left-str (ustr-former-seq raw-str)))
       (append left-str
              (if residual-kana
-                 (list pending)
+                (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                 (list pending))
                  '())
              right-str))))

@@ -1474,7 +1494,9 @@
          (if (member (car unconv) preconv)
              (let ((start (list-seq-contained? preconv unconv))
                    (len (length unconv)))
-               (if start
+               (if (and
+                      start
+ (= (length raw-str) (length preconv))) ;; sanity check
                    (anthy-make-raw-string
                     (reverse (sublist-rel raw-str start len))
                     (if (or
=======================================
--- /trunk/scm/canna.scm        Wed Jul 21 01:35:01 2010
+++ /trunk/scm/canna.scm        Thu Jul 22 23:32:15 2010
@@ -1162,9 +1162,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))))

       (if (canna-context-alnum cc)
           (let ((key-str (charcode->string key))
@@ -1174,9 +1178,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))
            (ustr-insert-elem! preconv-str
                               (if (= (canna-context-alnum-type cc)
                                      canna-type-halfwidth-alnum)
@@ -1200,10 +1208,20 @@
                      (ustr-insert-elem! preconv-str res))
                  (if (and next-pend
                           (not (string=? next-pend "")))
-                     (ustr-insert-elem! raw-str pend)
+                     (ustr-insert-seq! raw-str
+                                        (reverse (string-to-list pend)))
                      (if (list? (car res))
                          (begin
-                           (ustr-insert-elem! raw-str pend)
+                            (if (member pend
+                                        (map car
+                                             ja-consonant-sylable-table))
+                              ;; treat consonant having more than one
+                              ;; charactear as one raw-str in this case
+                              (ustr-insert-elem! raw-str pend)
+                              (ustr-insert-elem! raw-str (reverse
+                                                           (string-to-list
+                                                             pend))))
+                            ;; assume key-str as a vowel
                            (ustr-insert-elem! raw-str key-str))
                          (ustr-insert-elem!
                           raw-str
@@ -1314,8 +1332,10 @@
           (left-str (ustr-former-seq raw-str)))
      (append left-str
             (if residual-kana
-                (list pending)
-                '())
+               (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                (list pending))
+               '())
              right-str))))

 (define canna-get-raw-candidate
@@ -1340,7 +1360,9 @@
            (if (member (car unconv) preconv)
                (let ((start (list-seq-contained? preconv unconv))
                      (len (length unconv)))
-                 (if start
+                 (if (and
+                        start
+ (= (length raw-str) (length preconv))) ;; sanity check
                      (canna-make-raw-string
                       (reverse (sublist-rel raw-str start len))
                       (if (or
=======================================
--- /trunk/scm/mana.scm Wed Jul 21 01:35:01 2010
+++ /trunk/scm/mana.scm Thu Jul 22 23:32:15 2010
@@ -141,8 +141,10 @@
           (left-str (ustr-former-seq raw-str)))
      (append left-str
             (if residual-kana
-                (list pending)
-                '())
+               (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                 (list pending))
+               '())
             right-str))))

 (define mana-get-raw-candidate
@@ -171,7 +173,9 @@
           (if (member (car unconv) preconv)
               (let ((start (list-seq-contained? preconv unconv))
                     (len (length unconv)))
-                (if start
+                (if (and
+                       start
+ (= (length raw-str) (length preconv))) ;; sanity check
                     (mana-make-raw-string
                      (reverse (sublist-rel raw-str start len))
                      (if (or
@@ -1219,9 +1223,13 @@
              (if residual-kana
                  (begin
                     (if (list? (car residual-kana))
-                      (ustr-insert-seq! preconv-str residual-kana)
-                      (ustr-insert-elem! preconv-str residual-kana))
-                   (ustr-insert-elem! raw-str pend)))))
+                      (begin
+                        (ustr-insert-seq! preconv-str residual-kana)
+                        (ustr-insert-elem! raw-str (reverse
+ (string-to-list pend))))
+                      (begin
+                        (ustr-insert-elem! preconv-str residual-kana)
+                        (ustr-insert-elem! raw-str pend)))))))

        (if (mana-context-alnum mc)
            (let ((key-str (charcode->string key))
@@ -1231,9 +1239,13 @@
              (if residual-kana
                  (begin
                     (if (list? (car residual-kana))
-                      (ustr-insert-seq! preconv-str residual-kana)
-                      (ustr-insert-elem! preconv-str residual-kana))
-                   (ustr-insert-elem! raw-str pend)))
+                      (begin
+                        (ustr-insert-seq! preconv-str residual-kana)
+                        (ustr-insert-elem! raw-str (reverse
+ (string-to-list pend))))
+                      (begin
+                        (ustr-insert-elem! preconv-str residual-kana)
+                        (ustr-insert-elem! raw-str pend)))))
              (ustr-insert-elem! preconv-str
                                 (if (= (mana-context-alnum-type mc)
                                        mana-type-halfwidth-alnum)
@@ -1257,10 +1269,20 @@
                        (ustr-insert-elem! preconv-str res))
                    (if (and next-pend
                             (not (string=? next-pend "")))
-                       (ustr-insert-elem! raw-str pend)
+                       (ustr-insert-seq! raw-str
+                                          (reverse (string-to-list pend)))
                        (if (list? (car res))
                            (begin
-                             (ustr-insert-elem! raw-str pend)
+                              (if (member pend
+                                          (map car
+ ja-consonant-syllable-table))
+                                ;; treat consonant having more than one
+                                ;; charactear as one raw-str in this case
+                                (ustr-insert-elem! raw-str pend)
+                                (ustr-insert-seq! raw-str (reverse
+                                                            (string-to-list
+                                                              pend))))
+                              ;; assume key-str as a vowel
                              (ustr-insert-elem! raw-str key-str))
                            (ustr-insert-elem!
                             raw-str
=======================================
--- /trunk/scm/sj3.scm  Wed Jul 21 01:35:01 2010
+++ /trunk/scm/sj3.scm  Thu Jul 22 23:32:15 2010
@@ -1443,9 +1443,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))))

       (if (sj3-context-alnum sc)
           (let ((key-str (charcode->string key))
@@ -1455,9 +1459,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))
            (ustr-insert-elem! preconv-str
                               (if (= (sj3-context-alnum-type sc)
                                      sj3-type-halfwidth-alnum)
@@ -1481,10 +1489,20 @@
                      (ustr-insert-elem! preconv-str res))
                  (if (and next-pend
                           (not (string=? next-pend "")))
-                     (ustr-insert-elem! raw-str pend)
+                     (ustr-insert-seq! raw-str
+                                        (reverse (string-to-list pend)))
                      (if (list? (car res))
                          (begin
-                           (ustr-insert-elem! raw-str pend)
+                            (if (member pend
+                                        (map car
+                                             ja-consonant-sylable-table))
+                              ;; treat consonant having more than one
+                              ;; charactear as one raw-str in this case
+                              (ustr-insert-elem! raw-str pend)
+                              (ustr-insert-elem! raw-str (reverse
+                                                           (string-to-list
+                                                             pend))))
+                            ;; assume key-str as a vowel
                            (ustr-insert-elem! raw-str key-str))
                          (ustr-insert-elem!
                           raw-str
@@ -1595,8 +1613,10 @@
           (left-str (ustr-former-seq raw-str)))
      (append left-str
             (if residual-kana
-                (list pending)
-                '())
+               (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                (list pending))
+               '())
              right-str))))

 (define sj3-get-raw-candidate
@@ -1621,7 +1641,9 @@
            (if (member (car unconv) preconv)
                (let ((start (list-seq-contained? preconv unconv))
                      (len (length unconv)))
-                 (if start
+                 (if (and
+                        start
+ (= (length raw-str) (length preconv))) ;; sanity check
                      (sj3-make-raw-string
                       (reverse (sublist-rel raw-str start len))
                       (if (or
=======================================
--- /trunk/scm/social-ime.scm   Wed Jul 21 01:35:01 2010
+++ /trunk/scm/social-ime.scm   Thu Jul 22 23:32:15 2010
@@ -1358,9 +1358,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))))

       (if (social-ime-context-alnum sc)
           (let ((key-str (charcode->string key))
@@ -1370,9 +1374,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))
            (ustr-insert-elem! preconv-str
                               (if (= (social-ime-context-alnum-type sc)
                                      social-ime-type-halfwidth-alnum)
@@ -1396,10 +1404,20 @@
                      (ustr-insert-elem! preconv-str res))
                  (if (and next-pend
                           (not (string=? next-pend "")))
-                     (ustr-insert-elem! raw-str pend)
+                     (ustr-insert-seq! raw-str
+                                        (reverse (string-to-list pend)))
                      (if (list? (car res))
                          (begin
-                           (ustr-insert-elem! raw-str pend)
+                            (if (member pend
+                                        (map car
+                                             ja-consonant-sylable-table))
+                              ;; treat consonant having more than one
+                              ;; charactear as one raw-str in this case
+                              (ustr-insert-elem! raw-str pend)
+                              (ustr-insert-elem! raw-str (reverse
+                                                           (string-to-list
+                                                             pend))))
+                            ;; assume key-str as a vowel
                            (ustr-insert-elem! raw-str key-str))
                          (ustr-insert-elem!
                           raw-str
@@ -1510,8 +1528,10 @@
           (left-str (ustr-former-seq raw-str)))
      (append left-str
             (if residual-kana
-                (list pending)
-                '())
+               (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                (list pending))
+               '())
              right-str))))

 (define social-ime-get-raw-candidate
@@ -1536,7 +1556,9 @@
            (if (member (car unconv) preconv)
                (let ((start (list-seq-contained? preconv unconv))
                      (len (length unconv)))
-                 (if start
+                 (if (and
+                        start
+ (= (length raw-str) (length preconv))) ;; sanity check
                      (social-ime-make-raw-string
                       (reverse (sublist-rel raw-str start len))
                       (if (or
=======================================
--- /trunk/scm/wnn.scm  Wed Jul 21 01:35:01 2010
+++ /trunk/scm/wnn.scm  Thu Jul 22 23:32:15 2010
@@ -1216,9 +1216,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))))

       (if (wnn-context-alnum wc)
           (let ((key-str (charcode->string key))
@@ -1228,9 +1232,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))
            (ustr-insert-elem! preconv-str
                               (if (= (wnn-context-alnum-type wc)
                                      wnn-type-halfwidth-alnum)
@@ -1253,10 +1261,20 @@
                      (ustr-insert-elem! preconv-str res))
                  (if (and next-pend
                           (not (string=? next-pend "")))
-                     (ustr-insert-elem! raw-str pend)
+                     (ustr-insert-seq! raw-str
+                                        (reverse (string-to-list pend)))
                      (if (list? (car res))
                          (begin
-                           (ustr-insert-elem! raw-str pend)
+                            (if (member pend
+                                        (map car
+                                             ja-consonant-sylable-table))
+                              ;; treat consonant having more than one
+                              ;; charactear as one raw-str in this case
+                              (ustr-insert-elem! raw-str pend)
+                              (ustr-insert-elem! raw-str (reverse
+                                                           (string-to-list
+                                                             pend))))
+                            ;; assume key-str as a vowel
                            (ustr-insert-elem! raw-str key-str))
                          (ustr-insert-elem!
                           raw-str
@@ -1366,8 +1384,10 @@
           (left-str (ustr-former-seq raw-str)))
      (append left-str
             (if residual-kana
-                (list pending)
-                '())
+               (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                (list pending))
+               '())
              right-str))))

 (define wnn-get-raw-candidate
@@ -1392,7 +1412,9 @@
            (if (member (car unconv) preconv)
                (let ((start (list-seq-contained? preconv unconv))
                      (len (length unconv)))
-                 (if start
+                 (if (and
+                        start
+ (= (length raw-str) (length preconv))) ;; sanity check
                      (wnn-make-raw-string
                       (reverse (sublist-rel raw-str start len))
                       (if (or
=======================================
--- /trunk/scm/yahoo-jp.scm     Wed Jul 21 01:35:01 2010
+++ /trunk/scm/yahoo-jp.scm     Thu Jul 22 23:32:15 2010
@@ -1374,9 +1374,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))))

       (if (yahoo-jp-context-alnum yc)
           (let ((key-str (charcode->string key))
@@ -1386,9 +1390,13 @@
            (if residual-kana
                (begin
                   (if (list? (car residual-kana))
-                    (ustr-insert-seq! preconv-str residual-kana)
-                    (ustr-insert-elem! preconv-str residual-kana))
-                 (ustr-insert-elem! raw-str pend)))
+                    (begin
+                      (ustr-insert-seq! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str (reverse
+                                                   (string-to-list pend))))
+                    (begin
+                      (ustr-insert-elem! preconv-str residual-kana)
+                      (ustr-insert-elem! raw-str pend)))))
            (ustr-insert-elem! preconv-str
                               (if (= (yahoo-jp-context-alnum-type yc)
                                      yahoo-jp-type-halfwidth-alnum)
@@ -1412,10 +1420,20 @@
                      (ustr-insert-elem! preconv-str res))
                  (if (and next-pend
                           (not (string=? next-pend "")))
-                     (ustr-insert-elem! raw-str pend)
+                     (ustr-insert-seq! raw-str
+                                        (reverse (string-to-list pend)))
                      (if (list? (car res))
                          (begin
-                           (ustr-insert-elem! raw-str pend)
+                            (if (member pend
+                                        (map car
+                                             ja-consonant-sylable-table))
+                              ;; treat consonant having more than one
+                              ;; charactear as one raw-str in this case
+                              (ustr-insert-elem! raw-str pend)
+                              (ustr-insert-elem! raw-str (reverse
+                                                           (string-to-list
+                                                             pend))))
+                            ;; assume key-str as a vowel
                            (ustr-insert-elem! raw-str key-str))
                          (ustr-insert-elem!
                           raw-str
@@ -1526,8 +1544,10 @@
           (left-str (ustr-former-seq raw-str)))
      (append left-str
             (if residual-kana
-                (list pending)
-                '())
+               (if (list? (car residual-kana))
+                 (reverse (string-to-list pending))
+                (list pending))
+               '())
              right-str))))

 (define yahoo-jp-get-raw-candidate
@@ -1552,7 +1572,9 @@
            (if (member (car unconv) preconv)
                (let ((start (list-seq-contained? preconv unconv))
                      (len (length unconv)))
-                 (if start
+                 (if (and
+                        start
+ (= (length raw-str) (length preconv))) ;; sanity check
                      (yahoo-jp-make-raw-string
                       (reverse (sublist-rel raw-str start len))
                       (if (or

Reply via email to