Revision: 6843
Author: deton.kih
Date: Mon Dec 27 02:47:03 2010
Log: * Add postfix bushu conversion in yomi of mazegaki.
* NEWS
  - Add news.
* scm/tutcode-key-custom.scm
  - (tutcode-postfix-bushu-start-sequence): New custom.
* scm/tutcode.scm
  - (tutcode-stroke-help-update-alist-with-rule):
    Add mark for postfix bushu conversion.
  - (tutcode-proc-state-on):
    Rewrite to remove dependency on addition of new sequence.
  - (tutcode-proc-state-yomi):
    Change to use head variable.
    Add postfix bushu conversion.
  - (tutcode-proc-state-bushu, tutcode-proc-state-interactive-bushu):
    Rewrite to remove dependency on addition of new sequence.
  - (tutcode-custom-set-mazegaki/bushu-start-sequence!):
    Simplify.
    Add tutcode-postfix-bushu-start-sequence.

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

Modified:
 /trunk/NEWS
 /trunk/scm/tutcode-key-custom.scm
 /trunk/scm/tutcode.scm

=======================================
--- /trunk/NEWS Mon Dec 27 02:43:58 2010
+++ /trunk/NEWS Mon Dec 27 02:47:03 2010
@@ -3,6 +3,7 @@
 * Enhancements
   - uim-tutcode
     * Interactive bushu conversion
+    * Postfix bushu conversion in yomi of mazegaki.
     * Completion
     * Input prediction in mazegaki conversion
     * Input prediction in bushu conversion
=======================================
--- /trunk/scm/tutcode-key-custom.scm   Mon Dec 27 02:43:58 2010
+++ /trunk/scm/tutcode-key-custom.scm   Mon Dec 27 02:47:03 2010
@@ -89,6 +89,12 @@
               (N_ "[TUT-Code] interactive bushu conversion mode")
               (N_ "long description will be here"))

+(define-custom 'tutcode-postfix-bushu-start-sequence ""
+               '(tutcode-keys1)
+              '(string ".*")
+              (N_ "[TUT-Code] postfix bushu conversion")
+              (N_ "long description will be here"))
+
 (define-custom 'tutcode-latin-conv-start-sequence "al/"
                '(tutcode-keys1 mode-transition)
               '(string ".*")
=======================================
--- /trunk/scm/tutcode.scm      Mon Dec 27 02:43:58 2010
+++ /trunk/scm/tutcode.scm      Mon Dec 27 02:47:03 2010
@@ -39,6 +39,10 @@
 ;;;   ºÆµ¢Åª¤ÊÉô¼ó¹çÀ®ÊÑ´¹¤â²Äǽ¤Ç¤¹¡£
 ;;;   Éô¼ó¹çÀ®¤Î¥¢¥ë¥´¥ê¥º¥à¤Ïtc-2.1¤Î¤â¤Î¤Ç¤¹¡£
 ;;;
+;;; * ¸åÃÖ·¿Éô¼ó¹çÀ®ÊÑ´¹¤Ï¡¢¸ò¤¼½ñ¤­ÊÑ´¹¤ÎÆÉ¤ßÆþÎÏÃæ¤Î¤ßÂбþ¤·¤Æ¤¤¤Þ¤¹¡£
+;;;   ³«»Ï¥­¡¼¤ò°Ê²¼¤Î¤è¤¦¤ËÀßÄꤹ¤ë¤È»ÈÍѲÄǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
+;;;   (define tutcode-postfix-bushu-start-sequence "ald")
+;;;
 ;;; * ÂÐÏÃŪ¤ÊÉô¼ó¹çÀ®ÊÑ´¹
 ;;;   °Ê²¼¤Î¤è¤¦¤ÊÀßÄê¤ò¤¹¤ë¤È»ÈÍѲÄǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
 ;;;   (define tutcode-use-interactive-bushu-conversion? #t)
@@ -1462,6 +1466,7 @@
             ((tutcode-latin-conv-start) "/")
             ((tutcode-bushu-start) "¢¡")
             ((tutcode-interactive-bushu-start) "¢§")
+            ((tutcode-postfix-bushu-start) "¢¥")
             ((tutcode-auto-help-redisplay) "¢ã")
             (else cand)))
          (cand-hint
@@ -2113,27 +2118,26 @@
              (tutcode-commit-raw pc key key-state)))
           (else
            (let ((res (tutcode-push-key! pc (charcode->string key))))
-             (if res
-               (case res
-                ((tutcode-mazegaki-start)
-                  (tutcode-context-set-latin-conv! pc #f)
-                  (tutcode-context-set-state! pc 'tutcode-state-yomi))
-                ((tutcode-latin-conv-start)
-                  (tutcode-context-set-latin-conv! pc #t)
-                  (tutcode-context-set-state! pc 'tutcode-state-yomi))
-                ((tutcode-bushu-start)
-                  (tutcode-context-set-state! pc 'tutcode-state-bushu)
-                  (tutcode-append-string pc "¢¥"))
-                ((tutcode-interactive-bushu-start)
-                  (tutcode-context-set-prediction-nr! pc 0)
-                  (tutcode-context-set-state! pc
-                    'tutcode-state-interactive-bushu))
-                ((tutcode-auto-help-redisplay)
-                  (tutcode-auto-help-redisplay pc))
-                (else
-                  (tutcode-commit pc res)
-                  (if tutcode-use-completion?
-                    (tutcode-check-completion pc #f 0))))))))))))
+            (cond
+              ((string? res)
+                (tutcode-commit pc res)
+                (if tutcode-use-completion?
+                  (tutcode-check-completion pc #f 0)))
+              ((eq? res 'tutcode-mazegaki-start)
+                (tutcode-context-set-latin-conv! pc #f)
+                (tutcode-context-set-state! pc 'tutcode-state-yomi))
+              ((eq? res 'tutcode-latin-conv-start)
+                (tutcode-context-set-latin-conv! pc #t)
+                (tutcode-context-set-state! pc 'tutcode-state-yomi))
+              ((eq? res 'tutcode-bushu-start)
+                (tutcode-context-set-state! pc 'tutcode-state-bushu)
+                (tutcode-append-string pc "¢¥"))
+              ((eq? res 'tutcode-interactive-bushu-start)
+                (tutcode-context-set-prediction-nr! pc 0)
+                (tutcode-context-set-state! pc
+                  'tutcode-state-interactive-bushu))
+              ((eq? res 'tutcode-auto-help-redisplay)
+                (tutcode-auto-help-redisplay pc))))))))))

 ;;; ľÀÜÆþÎϾõÂ֤ΤȤ­¤Î¥­¡¼ÆþÎϤò½èÍý¤¹¤ë¡£
 ;;; @param c ¥³¥ó¥Æ¥­¥¹¥È¥ê¥¹¥È
@@ -2213,6 +2217,7 @@
   (let*
     ((pc (tutcode-find-descendant-context c))
      (rkc (tutcode-context-rk-context pc))
+     (head (tutcode-context-head pc))
      (kigou2-mode? (tutcode-kigou2-mode? pc))
      (res #f)
      ;; reset-candidate-window¤Ç¥ê¥»¥Ã¥È¤µ¤ì¤ë¤Î¤ÇÊݸ¤·¤Æ¤ª¤¯
@@ -2249,15 +2254,15 @@
           ((tutcode-backspace-key? key key-state)
            (if (> (length (rk-context-seq rkc)) 0)
             (rk-flush rkc)
-            (if (> (length (tutcode-context-head pc)) 0)
+            (if (> (length head) 0)
               (begin
- (tutcode-context-set-head! pc (cdr (tutcode-context-head pc)))
+                (tutcode-context-set-head! pc (cdr head))
                 (if predicting?
                   (tutcode-check-prediction pc #f))))))
           ((or
             (tutcode-commit-key? key key-state)
             (tutcode-return-key? key key-state))
- (tutcode-commit pc (tutcode-make-string (tutcode-context-head pc)))
+           (tutcode-commit pc (tutcode-make-string head))
            (tutcode-flush pc))
           ((tutcode-cancel-key? key key-state)
            (tutcode-flush pc))
@@ -2271,7 +2276,7 @@
;; ¸õÊä¿ô¤¬1¸Ä¤Î¾ì¹ç¡¢ÊÑ´¹¸å¼«Æ°³ÎÄꤵ¤ì¤Æconverting¥â¡¼¥É¤ËÆþ¤é¤Ê¤¤
           ;; ¤Î¤Ç¡¢¤½¤Î¾ì¹ç¤Ç¤âpurge¤Ç¤­¤ë¤è¤¦¤Ë¡¢¤³¤³¤Ç¥Á¥§¥Ã¥¯
           ((and (tutcode-purge-candidate-key? key key-state)
-                (not (null? (tutcode-context-head pc)))
+                (not (null? head))
                 (not kigou2-mode?))
            ;; converting¥â¡¼¥É¤Ë°Ü¹Ô¤·¤Æ¤«¤épurge
            (tutcode-begin-conversion pc #f #f)
@@ -2290,7 +2295,7 @@
             (not (shift-key-mask key-state)))
            ;; <Control>nÅù¤Ç¤ÎÊÑ´¹³«»Ï?
            (if (tutcode-begin-conv-key? key key-state)
-             (if (not (null? (tutcode-context-head pc)))
+             (if (not (null? head))
(tutcode-begin-conversion pc #t tutcode-use-recursive-learning?)
                (tutcode-flush pc))
              (begin
@@ -2302,7 +2307,7 @@
               (charcode->string key) 'tutcode-predicting-prediction))
           ((tutcode-context-latin-conv pc)
(if (tutcode-begin-conv-key? key key-state) ; space¥­¡¼¤Ç¤ÎÊÑ´¹³«»Ï?
-             (if (not (null? (tutcode-context-head pc)))
+             (if (not (null? head))
(tutcode-begin-conversion pc #t tutcode-use-recursive-learning?)
                (tutcode-flush pc))
              (set! res (charcode->string key))))
@@ -2315,28 +2320,33 @@
              ;; (trycode¤Çspace¤Ç»Ï¤Þ¤ë¥­¡¼¥·¡¼¥±¥ó¥¹¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢
              ;;  space¤ÇÊÑ´¹³«»Ï¤Ï¤Ç¤­¤Ê¤¤¤Î¤Ç¡¢<Control>nÅù¤ò»È¤¦É¬Íפ¢¤ê)
              (if (tutcode-begin-conv-key? key key-state)
-               (if (not (null? (tutcode-context-head pc)))
+               (if (not (null? head))
(tutcode-begin-conversion pc #t tutcode-use-recursive-learning?)
                  (tutcode-flush pc))
                (set! res (charcode->string key)))))
           (else
            (set! res (tutcode-push-key! pc (charcode->string key)))
-           (case res
-            ((tutcode-mazegaki-start)
-              (set! res #f))
-            ((tutcode-latin-conv-start)
-              (set! res #f))
-            ((tutcode-auto-help-redisplay)
+           (cond
+            ((eq? res 'tutcode-auto-help-redisplay)
               (tutcode-auto-help-redisplay pc)
               (set! res #f))
-            ((tutcode-bushu-start)
-              (set! res #f))
-            ((tutcode-interactive-bushu-start)
+            ((eq? res 'tutcode-postfix-bushu-start)
+              (set! res
+                (and (>= (length head) 2)
+                     (tutcode-bushu-convert (cadr head) (car head))))
+              (if res
+                (begin
+                  (tutcode-context-set-head! pc (cddr head))
+ (tutcode-check-auto-help-window-begin pc (list res) ()))))
+            ((symbol? res)
               (set! res #f)))))
         (if res
           (begin
             (tutcode-append-string pc res)
-            (if tutcode-use-prediction?
+            (if (and tutcode-use-prediction?
+ ;; ¸åÃÖ·¿Éô¼ó¹çÀ®ÊÑ´¹¤Ë¤è¤ëauto-helpɽ¼¨ºÑ»þ¤Ï²¿¤â¤·¤Ê¤¤
+                     (eq? (tutcode-context-candidate-window pc)
+                          'tutcode-candidate-window-off))
               (tutcode-check-prediction pc #f))))))))

 ;;; Éô¼ó¹çÀ®ÊÑ´¹¤ÎÉô¼óÆþÎϾõÂ֤ΤȤ­¤Î¥­¡¼ÆþÎϤò½èÍý¤¹¤ë¡£
@@ -2420,18 +2430,14 @@
          (set! res (charcode->string key))))
       (else
        (set! res (tutcode-push-key! pc (charcode->string key)))
-       (case res
- ((tutcode-mazegaki-start) ;XXX Éô¼ó¹çÀ®ÊÑ´¹Ãæ¤Ï¸ò¤¼½ñ¤­ÊÑ´¹¤Ï̵¸ú¤Ë¤¹¤ë
+       (cond
+        ((eq? res 'tutcode-bushu-start) ; ºÆµ¢Åª¤ÊÉô¼ó¹çÀ®ÊÑ´¹
+          (tutcode-append-string pc "¢¥")
           (set! res #f))
-        ((tutcode-latin-conv-start)
-          (set! res #f))
-        ((tutcode-auto-help-redisplay)
+        ((eq? res 'tutcode-auto-help-redisplay)
           (tutcode-auto-help-redisplay pc)
           (set! res #f))
-        ((tutcode-bushu-start) ; ºÆµ¢Åª¤ÊÉô¼ó¹çÀ®ÊÑ´¹
-          (tutcode-append-string pc "¢¥")
-          (set! res #f))
-        ((tutcode-interactive-bushu-start)
+        ((symbol? res) ;XXX Éô¼ó¹çÀ®ÊÑ´¹Ãæ¤Ï¸ò¤¼½ñ¤­ÊÑ´¹Åù¤Ï̵¸ú¤Ë¤¹¤ë
           (set! res #f)))))
     (if res
       (tutcode-begin-bushu-conversion pc res))))
@@ -2557,17 +2563,11 @@
              (set! res (charcode->string key))))
           (else
            (set! res (tutcode-push-key! pc (charcode->string key)))
-           (case res
- ((tutcode-mazegaki-start) ;XXX Éô¼ó¹çÀ®ÊÑ´¹Ãæ¤Ï¸ò¤¼½ñ¤­ÊÑ´¹¤Ï̵¸ú²½
-              (set! res #f))
-            ((tutcode-latin-conv-start)
-              (set! res #f))
-            ((tutcode-auto-help-redisplay)
+           (cond
+            ((eq? res 'tutcode-auto-help-redisplay)
               (tutcode-auto-help-redisplay pc)
               (set! res #f))
-            ((tutcode-bushu-start)
-              (set! res #f))
-            ((tutcode-interactive-bushu-start)
+            ((symbol? res) ;XXX Éô¼ó¹çÀ®ÊÑ´¹Ãæ¤Ï¸ò¤¼½ñ¤­ÊÑ´¹Åù¤Ï̵¸ú¤Ë¤¹¤ë
               (set! res #f)))))
         (if res
           (begin
@@ -3618,43 +3618,31 @@
;;; tutcode-key-custom¤ÇÀßÄꤵ¤ì¤¿¸ò¤¼½ñ¤­/Éô¼ó¹çÀ®ÊÑ´¹³«»Ï¤Î¥­¡¼¥·¡¼¥±¥ó¥¹¤ò
 ;;; ¥³¡¼¥Éɽ¤ËÈ¿±Ç¤¹¤ë
 (define (tutcode-custom-set-mazegaki/bushu-start-sequence!)
-  (let*
+  (let
     ((make-subrule
       (lambda (keyseq cmd)
-        (if
-          (and
-            keyseq
-            (> (string-length keyseq) 0))
+        (and keyseq
+             (> (string-length keyseq) 0))
           (let ((keys (reverse (string-to-list keyseq))))
-            (list (list (list keys) cmd)))
-          #f)))
-     (mazegaki-rule
-      (make-subrule tutcode-mazegaki-start-sequence
-        '(tutcode-mazegaki-start)))
-     (latin-conv-rule
-      (make-subrule tutcode-latin-conv-start-sequence
-        '(tutcode-latin-conv-start)))
-     (bushu-rule
-      (make-subrule tutcode-bushu-start-sequence
-        '(tutcode-bushu-start)))
-     (interactive-bushu-rule
-      (and
-        tutcode-use-interactive-bushu-conversion?
-        (make-subrule tutcode-interactive-bushu-start-sequence
-          '(tutcode-interactive-bushu-start))))
-     (auto-help-rule
-      (make-subrule tutcode-auto-help-redisplay-sequence
-        '(tutcode-auto-help-redisplay))))
-    (if mazegaki-rule
-      (tutcode-rule-set-sequences! mazegaki-rule))
-    (if latin-conv-rule
-      (tutcode-rule-set-sequences! latin-conv-rule))
-    (if bushu-rule
-      (tutcode-rule-set-sequences! bushu-rule))
-    (if interactive-bushu-rule
-      (tutcode-rule-set-sequences! interactive-bushu-rule))
-    (if auto-help-rule
-      (tutcode-rule-set-sequences! auto-help-rule))))
+            (list (list keys) cmd)))))
+    (tutcode-rule-set-sequences!
+      (filter
+        pair?
+        (list
+          (make-subrule tutcode-mazegaki-start-sequence
+            '(tutcode-mazegaki-start))
+          (make-subrule tutcode-latin-conv-start-sequence
+            '(tutcode-latin-conv-start))
+          (make-subrule tutcode-bushu-start-sequence
+            '(tutcode-bushu-start))
+          (and
+            tutcode-use-interactive-bushu-conversion?
+            (make-subrule tutcode-interactive-bushu-start-sequence
+              '(tutcode-interactive-bushu-start)))
+          (make-subrule tutcode-postfix-bushu-start-sequence
+            '(tutcode-postfix-bushu-start))
+          (make-subrule tutcode-auto-help-redisplay-sequence
+            '(tutcode-auto-help-redisplay)))))))

 ;;; ¥³¡¼¥Éɽ¤Î°ìÉô¤ÎÄêµÁ¤ò¾å½ñ¤­Êѹ¹/Äɲ乤롣~/.uim¤«¤é¤Î»ÈÍѤòÁÛÄê¡£
 ;;; ¸Æ¤Ó½Ð¤·»þ¤Ë¤Ïtutcode-rule-userconfig¤ËÅÐÏ¿¤·¤Æ¤ª¤¯¤À¤±¤Ç¡¢

Reply via email to