Revision: 7362
Author: deton.kih
Date: Thu Nov 3 04:07:18 2011
Log: * Add function to paste clipboard text into preedit
using text acquisition API.
* scm/tutcode-key-custom.scm
- (tutcode-paste-key): New custom key.
* scm/tutcode.scm
- (tutcode-help-clipboard):
Change to call tutcode-clipboard-acquire-text.
- (tutcode-clipboard-acquire-text):
Extracted from tutcode-help-clipboard.
- (tutcode-proc-state-on,
tutcode-proc-state-yomi,
tutcode-proc-state-code,
tutcode-proc-state-bushu,
tutcode-proc-state-interactive-bushu): Add check of paste key.
http://code.google.com/p/uim/source/detail?r=7362
Modified:
/trunk/scm/tutcode-key-custom.scm
/trunk/scm/tutcode.scm
=======================================
--- /trunk/scm/tutcode-key-custom.scm Thu Nov 3 03:57:28 2011
+++ /trunk/scm/tutcode-key-custom.scm Thu Nov 3 04:07:18 2011
@@ -293,6 +293,12 @@
(N_ "[TUT-Code] cancel")
(N_ "long description will be here"))
+(define-custom 'tutcode-paste-key '()
+ '(tutcode-keys1)
+ '(key)
+ (N_ "[TUT-Code] paste from clipboard")
+ (N_ "long description will be here"))
+
(define-custom 'tutcode-next-candidate-key '(generic-next-candidate-key)
'(tutcode-keys1)
'(key)
=======================================
--- /trunk/scm/tutcode.scm Thu Nov 3 03:57:28 2011
+++ /trunk/scm/tutcode.scm Thu Nov 3 04:07:18 2011
@@ -2035,14 +2035,24 @@
;;; ¥¯¥ê¥Ã¥×¥Ü¡¼¥ÉÆâ¤Îʸ»ú¤ÎÂǤÁÊý¤òɽ¼¨¤¹¤ë¡£
;;; (surrounding text API¤ò»È¤Ã¤Æ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤«¤éʸ»ú¤ò¼èÆÀ)
(define (tutcode-help-clipboard pc)
- (and-let*
+ (let*
((len (length tutcode-auto-help-cand-str-list))
- (ustr (im-acquire-text pc 'clipboard 'beginning 0 len))
- (latter (ustr-latter-seq ustr))
- (latter-seq (and (pair? latter) (string-to-list (car latter)))))
- (if (positive? (length latter-seq))
+ (latter-seq (tutcode-clipboard-acquire-text pc len)))
+ (if (pair? latter-seq)
(tutcode-check-auto-help-window-begin pc latter-seq () #t))))
+;;; surrounding text API¤ò»È¤Ã¤Æ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤«¤éʸ»ú¤ò¼èÆÀ
+;;; @param len ¼èÆÀ¤¹¤ëʸ»ú¿ô
+;;; @return ¼èÆÀ¤·¤¿Ê¸»úÎó¤Î¥ê¥¹¥È(µÕ½ç)¡£¼èÆÀ¤Ç¤¤Ê¤¤¾ì¹ç¤Ï#f
+(define (tutcode-clipboard-acquire-text pc len)
+ (and-let*
+ ((ustr (im-acquire-text pc 'clipboard 'beginning 0 len))
+ (latter (ustr-latter-seq ustr))
+ (latter-seq (and (pair? latter) (string-to-list (car latter))))
+ (latter-seq-wo-nl (delete "\n" latter-seq)))
+ (and (not (null? latter-seq-wo-nl))
+ latter-seq-wo-nl)))
+
;;; ¼«Æ°¥Ø¥ë¥×¤Îɽ·Á¼°É½¼¨¤Ë»È¤¦alist¤ò¹¹¿·¤¹¤ë¡£
;;;
alist¤Ï°Ê²¼¤Î¤è¤¦¤ËÂǸ°¤ò¼¨¤¹¥é¥Ù¥ëʸ»ú¤È¡¢³ºÅö¥»¥ë¤Ëɽ¼¨¤¹¤ëʸ»úÎó¤Î¥ê¥¹¥È
;;; Îã:(("y" "2" "1") ("t" "3")) ; ("y" "y" "t")¤È¤¤¤¦¥¹¥È¥í¡¼¥¯¤òɽ¤¹¡£
@@ -2767,6 +2777,11 @@
(if (> len 1)
(tutcode-check-completion pc #t (- len 1))))
(tutcode-check-completion pc #t 0)))
+ ((and (tutcode-paste-key? key key-state)
+ (pair? (tutcode-context-parent-context pc)))
+ (let ((latter-seq (tutcode-clipboard-acquire-text pc 'full)))
+ (if (pair? latter-seq)
+ (tutcode-commit pc (string-list-concat latter-seq)))))
((or
(symbol? key)
(and
@@ -3461,6 +3476,10 @@
ja-type-hiragana
ja-type-katakana)))
(tutcode-flush pc))
+ ((tutcode-paste-key? key key-state)
+ (let ((latter-seq (tutcode-clipboard-acquire-text pc 'full)))
+ (if (pair? latter-seq)
+ (tutcode-context-set-head! pc (append latter-seq head)))))
((symbol? key)
(tutcode-flush pc)
(tutcode-proc-state-on pc key key-state))
@@ -3573,6 +3592,10 @@
(tutcode-return-key? key key-state))
(tutcode-commit pc (string-list-concat head))
(tutcode-flush pc))
+ ((tutcode-paste-key? key key-state)
+ (let ((latter-seq (tutcode-clipboard-acquire-text pc 'full)))
+ (if (pair? latter-seq)
+ (tutcode-context-set-head! pc (append latter-seq head)))))
((symbol? key)
(tutcode-flush pc)
(tutcode-proc-state-on pc key key-state))
@@ -3665,6 +3688,11 @@
(tutcode-change-bushu-prediction-page pc #t))
((and predicting? (tutcode-prev-page-key? key key-state))
(tutcode-change-bushu-prediction-page pc #f))
+ ((tutcode-paste-key? key key-state)
+ ;; XXX:1ʸ»ú¤Î¤ß¼èÆÀ¡£¢¥¤ò´Þ¤àʸ»úÎó¤ò¥Ú¡¼¥¹¥È¤Ç¤¤ë¤È¤¦¤ì¤·¤¤¤«¤â
+ (let ((latter-seq (tutcode-clipboard-acquire-text pc 1)))
+ (if (pair? latter-seq)
+ (set! res (car latter-seq)))))
((or
(symbol? key)
(and
@@ -3814,6 +3842,11 @@
(tutcode-flush pc))
((tutcode-stroke-help-toggle-key? key key-state)
(tutcode-toggle-stroke-help pc))
+ ((tutcode-paste-key? key key-state)
+ ;;
XXX:1ʸ»ú¤Î¤ß¼èÆÀ¡£Ê£¿ô¤ÎÉô¼ó¤ò°ìÅÙ¤Ëpaste¤Ç¤¤ë¤È¤¦¤ì¤·¤¤¤«¤â
+ (let ((latter-seq (tutcode-clipboard-acquire-text pc 1)))
+ (if (pair? latter-seq)
+ (set! res (car latter-seq)))))
((or
(symbol? key)
(and