Revision: 6565
Author: ek.kato
Date: Thu Jul 22 22:19:37 2010
Log: * scm/anthy-utf8.scm
  - (anthy-utf8-proc-input-state-with-preedit)
  - (anthy-utf8-get-raw-str-seq)
    - Make sure to fit raw-str with preconv-str as possible.
  - (anthy-utf8-get-raw-candidate)
    - Don't crash even if the length of preconv and raw-str
      differs.

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

Modified:
 /trunk/scm/anthy-utf8.scm

=======================================
--- /trunk/scm/anthy-utf8.scm   Thu Jul 22 19:26:26 2010
+++ /trunk/scm/anthy-utf8.scm   Thu Jul 22 22:19:37 2010
@@ -1289,9 +1289,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-utf8-context-alnum ac)
            (let ((key-str (if (symbol? key)
@@ -1305,9 +1309,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-utf8-context-alnum-type ac)
                                        anthy-type-halfwidth-alnum)
@@ -1334,10 +1342,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?
@@ -1468,7 +1486,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))))

@@ -1486,7 +1506,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

Reply via email to