Author: iratqq
Date: Sun Nov  9 03:00:39 2008
New Revision: 5621

Modified:
   trunk/scm/social-ime.scm

Log:
* scm/social-ime.scm
  (social-ime-conversion-make-commit-query):
  (social-ime-send-commit):
  (social-ime-lib-commit-segments): New function.
  (social-ime-lib-commit-segment): Remove.
  (social-ime-commit-string): Use social-ime-lib-commit-segments.

  Now, uim-social-ime supports learning mode.


Modified: trunk/scm/social-ime.scm
==============================================================================
--- trunk/scm/social-ime.scm    (original)
+++ trunk/scm/social-ime.scm    Sun Nov  9 03:00:39 2008
@@ -91,6 +91,20 @@
    str
    (social-ime-conversion-make-resize-query seg-cnts)))

+(define (social-ime-conversion-make-commit-query seg-cnts delta)
+  (string-append
+   (social-ime-conversion-make-resize-query seg-cnts)
+   (apply string-append
+          (map (lambda (idx seg)
+                 (if (not (= seg 0))
+                     (format "&commit[~a]=~a" idx seg)
+                     ""))
+               (iota (length delta))
+               delta))))
+(define (social-ime-send-commit str resize delta)
+  (let ((ret (social-ime-conversion-make-commit-query resize delta)))
+    (if (not (string=? ret ""))
+        (social-ime-conversion str ret))))

 (define (social-ime-lib-init)
   #t)
@@ -145,8 +159,12 @@
      (make-list (length cand) 0))
     (social-ime-context-set-sc-ctx! sc sc-ctx)
     (length cand)))
-(define (social-ime-lib-commit-segment sc seg delta)
-  #t)
+(define (social-ime-lib-commit-segments sc delta)
+  (let* ((sc-ctx (social-ime-context-sc-ctx sc))
+         (str (social-ime-internal-context-str sc-ctx))
+         (seg-cnts (social-ime-internal-context-seg-cnts sc-ctx)))
+    (social-ime-send-commit str seg-cnts delta)
+    #t))
 (define (social-ime-lib-reset-conversion sc)
   #f)

@@ -1204,11 +1222,7 @@
           (segments (social-ime-context-segments sc)))
       (if sc-ctx
           (begin
-            (for-each (lambda (seg-idx cand-idx)
-                        (if (> cand-idx social-ime-candidate-type-katakana)
- (social-ime-lib-commit-segment sc seg-idx cand-idx)))
-                      (iota (ustr-length segments))
-                      (ustr-whole-seq segments))
+            (social-ime-lib-commit-segments sc (ustr-whole-seq segments))
(if (every (lambda (x) (<= x social-ime-candidate-type-katakana))
                        (ustr-whole-seq segments))
                 (social-ime-lib-reset-conversion sc))))))

Reply via email to