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¤ËÅÐÏ¿¤·¤Æ¤ª¤¯¤À¤±¤Ç¡¢