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

Reply via email to