Author: ek.kato
Date: Wed Nov 26 01:42:04 2008
New Revision: 5632
Modified:
trunk/scm/anthy-utf8.scm
trunk/scm/anthy.scm
Log:
* scm/anthy.scm
- (anthy-learn-transposing-text) : New.
- (anthy-proc-transposing-state) : Learn transposing
hiragana/katakana string upon anthy-commit-key? (bug #18630).
* scm/anthy-utf8.scm
- (anthy-utf8-learn-transposing-text)
- (anthy-utf8-proc-transposing-state)
- Likewise.
Modified: trunk/scm/anthy-utf8.scm
==============================================================================
--- trunk/scm/anthy-utf8.scm (original)
+++ trunk/scm/anthy-utf8.scm Wed Nov 26 01:42:04 2008
@@ -747,6 +747,30 @@
(else
state))))
+(define anthy-utf8-learn-transposing-text
+ (lambda (ac)
+ (let ((ac-id (anthy-utf8-context-ac-id ac))
+ (transposing-type (anthy-utf8-context-transposing-type ac))
+ (preconv-str (anthy-utf8-make-whole-string ac #t
anthy-type-hiragana))
+ (type #f))
+ (define (expand-segment)
+ (if (not (= (anthy-utf8-lib-get-nr-segments ac-id) 1))
+ (begin
+ (anthy-utf8-lib-resize-segment ac-id 0 1)
+ (expand-segment))))
+ (cond
+ ((= transposing-type anthy-type-hiragana)
+ (set! type anthy-candidate-type-hiragana))
+ ((= transposing-type anthy-type-katakana)
+ (set! type anthy-candidate-type-katakana)))
+ (if (and ac-id
+ (> (string-length preconv-str) 0)
+ type)
+ (begin
+ (anthy-utf8-lib-set-string ac-id (anthy-utf8-lib-eucjp-to-utf8
preconv-str))
+ (expand-segment)
+ (anthy-utf8-lib-commit-segment ac-id 0 type))))))
+
(define anthy-utf8-proc-transposing-state
(lambda (ac key key-state)
(let ((rotate-list '())
@@ -795,6 +819,7 @@
; commit
(if (anthy-commit-key? key key-state)
(begin
+ (anthy-utf8-learn-transposing-text ac)
(im-commit ac (anthy-utf8-lib-eucjp-to-utf8
(anthy-utf8-transposing-text ac)))
(anthy-utf8-flush ac)
#f)
Modified: trunk/scm/anthy.scm
==============================================================================
--- trunk/scm/anthy.scm (original)
+++ trunk/scm/anthy.scm Wed Nov 26 01:42:04 2008
@@ -742,6 +742,30 @@
(else
state))))
+(define anthy-learn-transposing-text
+ (lambda (ac)
+ (let ((ac-id (anthy-context-ac-id ac))
+ (transposing-type (anthy-context-transposing-type ac))
+ (preconv-str (anthy-make-whole-string ac #t anthy-type-hiragana))
+ (type #f))
+ (define (expand-segment)
+ (if (not (= (anthy-lib-get-nr-segments ac-id) 1))
+ (begin
+ (anthy-lib-resize-segment ac-id 0 1)
+ (expand-segment))))
+ (cond
+ ((= transposing-type anthy-type-hiragana)
+ (set! type anthy-candidate-type-hiragana))
+ ((= transposing-type anthy-type-katakana)
+ (set! type anthy-candidate-type-katakana)))
+ (if (and ac-id
+ (> (string-length preconv-str) 0)
+ type)
+ (begin
+ (anthy-lib-set-string ac-id preconv-str)
+ (expand-segment)
+ (anthy-lib-commit-segment ac-id 0 type))))))
+
(define anthy-proc-transposing-state
(lambda (ac key key-state)
(let ((rotate-list '())
@@ -790,6 +814,7 @@
; commit
(if (anthy-commit-key? key key-state)
(begin
+ (anthy-learn-transposing-text ac)
(im-commit ac (anthy-transposing-text ac))
(anthy-flush ac)
#f)