]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't require thai-util.
authorKenichi Handa <handa@m17n.org>
Thu, 7 Nov 2002 06:25:49 +0000 (06:25 +0000)
committerKenichi Handa <handa@m17n.org>
Thu, 7 Nov 2002 06:25:49 +0000 (06:25 +0000)
(quail-thai-update-translation): Function deleted.
(thai-generate-quail-map): Changed to a macro that directly calls
quail-define-rules.
("thai-kesmanee", "thai-pattachote"): Don't use
UPDATE-TRANSLATION-FUNCTION.

leim/quail/thai.el

index 0056280b96fa46e3e789593b9f2c079c02aba9e9..c86d80ba688544c076b093d416c4a63f840ca13c 100644 (file)
 ;;; Code:
 
 (require 'quail)
-(require 'thai-util)
-
-(defun quail-thai-update-translation (control-flag)
-  (if (integerp control-flag)
-      ;; Non-composable character typed.
-      (setq quail-current-str
-           (buffer-substring (overlay-start quail-overlay)
-                             (overlay-end quail-overlay))
-           unread-command-events
-           (string-to-list
-            (substring quail-current-key control-flag)))
-    (setq quail-current-str
-         (compose-string (quail-lookup-map-and-concat quail-current-key))))
-  control-flag)
-
-(defun thai-generate-quail-map (translation-table)
-  (let ((i 0)
-       consonant vowel tone voweltone others)
-    ;; Categorize Thai characters into one of above.
-    (while (< i 128)
-      (let ((trans (aref translation-table i))
-           ptype)
-       (if (eq trans 0)
-           nil
-         (if (> (length trans) 1)
-             (setq ptype 'voweltone
-                   trans (vector (compose-string trans)))
-           (setq ptype (get-char-code-property (aref trans 0) 'phonetic-type))
-           (cond ((memq ptype '(vowel-upper vowel-lower))
-                  (setq ptype 'vowel))
-                 ((not (memq ptype '(consonant tone)))
-                  (setq ptype 'others))))
-         (set ptype (cons (cons (char-to-string i) trans)
-                          (symbol-value ptype)))))
-      (setq i (1+ i)))
-
-    (quail-map-from-table
-     '((base-state (consonant . vt-state)
-                  vowel tone voweltone others)
-       (vt-state (vowel . t-state)
-                voweltone tone)
-       (t-state tone)))))
+
+
+(defmacro thai-generate-quail-map (translation-table)
+  (let (map)
+     (dotimes (i (length translation-table))
+       (let ((trans (aref translation-table i)))
+        (when (not (eq trans 0))
+          (if (> (length trans) 1)
+              (setq trans (vector trans))
+            (setq trans (aref trans 0)))
+          (setq map (cons (list (char-to-string i) trans) map)))))
+     `(quail-define-rules ,@map)))
 
 ;; Thai Kesmanee keyboard support.
 
@@ -80,26 +50,25 @@ The difference from the ordinal Thai keyboard:
     '\e,T_\e(B' and '\e,To\e(B' are assigned to '\\' and '|' respectively,
     '\e,T#\e(B' and '\e,T%\e(B' are assigned to '`' and '~' respectively,
     Don't know where to assign characters '\e,Tz\e(B' and '\e,T{\e(B'."
- nil t t t t nil nil nil 'quail-thai-update-translation nil t)
-
-(quail-install-map 
- (thai-generate-quail-map
-  [
-   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0     ; control codes
-   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0     ; control codes
-   0   "#" "\e,TF\e(B" "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,TQi\e(B" "\e,T'\e(B"        ; SPC .. '
-   "\e,Tv\e(B" "\e,Tw\e(B" "\e,Tu\e(B" "\e,Ty\e(B" "\e,TA\e(B" "\e,T"\e(B" "\e,Tc\e(B" "\e,T=\e(B"     ; ( .. /
-   "\e,T(\e(B" "\e,TE\e(B" "/" "_" "\e,T@\e(B" "\e,T6\e(B" "\e,TX\e(B" "\e,TV\e(B" ; 0 .. 7
-   "\e,T$\e(B" "\e,T5\e(B" "\e,T+\e(B" "\e,TG\e(B" "\e,T2\e(B" "\e,T*\e(B" "\e,TL\e(B" "\e,TF\e(B"     ; 8 .. ?
-   "\e,Tq\e(B" "\e,TD\e(B" "\e,TZ\e(B" "\e,T)\e(B" "\e,T/\e(B" "\e,T.\e(B" "\e,Tb\e(B" "\e,T,\e(B"     ; @ .. G
-   "\e,Tg\e(B" "\e,T3\e(B" "\e,Tk\e(B" "\e,TI\e(B" "\e,TH\e(B" "\e,Tn\e(B" "\e,Tl\e(B" "\e,TO\e(B"     ; H .. O
-   "\e,T-\e(B" "\e,Tp\e(B" "\e,T1\e(B" "\e,T&\e(B" "\e,T8\e(B" "\e,Tj\e(B" "\e,TN\e(B" "\""  ; P .. W
-   ")" "\e,Tm\e(B" "(" "\e,T:\e(B" "\e,T_\e(B" "\e,TE\e(B" "\e,TY\e(B" "\e,Tx\e(B" ; X .. _
-   "\e,T#\e(B" "\e,T?\e(B" "\e,TT\e(B" "\e,Ta\e(B" "\e,T!\e(B" "\e,TS\e(B" "\e,T4\e(B" "\e,T`\e(B"     ; ` .. g
-   "\e,Ti\e(B" "\e,TC\e(B" "\e,Th\e(B" "\e,TR\e(B" "\e,TJ\e(B" "\e,T7\e(B" "\e,TW\e(B" "\e,T9\e(B"     ; h .. o
-   "\e,TB\e(B" "\e,Tf\e(B" "\e,T>\e(B" "\e,TK\e(B" "\e,TP\e(B" "\e,TU\e(B" "\e,TM\e(B" "\e,Td\e(B"     ; p .. w
-   "\e,T;\e(B" "\e,TQ\e(B" "\e,T<\e(B" "\e,T0\e(B" "\e,To\e(B" "." "\e,T%\e(B" 0   ; x .. DEL
-   ]))
+ nil t t t t nil nil nil nil nil t)
+
+(thai-generate-quail-map
+ [
+  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0      ; control codes
+  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0      ; control codes
+  0   "#" "\e,TF\e(B" "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,TQi\e(B" "\e,T'\e(B" ; SPC .. '
+  "\e,Tv\e(B" "\e,Tw\e(B" "\e,Tu\e(B" "\e,Ty\e(B" "\e,TA\e(B" "\e,T"\e(B" "\e,Tc\e(B" "\e,T=\e(B"      ; ( .. /
+  "\e,T(\e(B" "\e,TE\e(B" "/" "_" "\e,T@\e(B" "\e,T6\e(B" "\e,TX\e(B" "\e,TV\e(B"  ; 0 .. 7
+  "\e,T$\e(B" "\e,T5\e(B" "\e,T+\e(B" "\e,TG\e(B" "\e,T2\e(B" "\e,T*\e(B" "\e,TL\e(B" "\e,TF\e(B"      ; 8 .. ?
+  "\e,Tq\e(B" "\e,TD\e(B" "\e,TZ\e(B" "\e,T)\e(B" "\e,T/\e(B" "\e,T.\e(B" "\e,Tb\e(B" "\e,T,\e(B"      ; @ .. G
+  "\e,Tg\e(B" "\e,T3\e(B" "\e,Tk\e(B" "\e,TI\e(B" "\e,TH\e(B" "\e,Tn\e(B" "\e,Tl\e(B" "\e,TO\e(B"      ; H .. O
+  "\e,T-\e(B" "\e,Tp\e(B" "\e,T1\e(B" "\e,T&\e(B" "\e,T8\e(B" "\e,Tj\e(B" "\e,TN\e(B" "\""   ; P .. W
+  ")" "\e,Tm\e(B" "(" "\e,T:\e(B" "\e,T_\e(B" "\e,TE\e(B" "\e,TY\e(B" "\e,Tx\e(B"  ; X .. _
+  "\e,T#\e(B" "\e,T?\e(B" "\e,TT\e(B" "\e,Ta\e(B" "\e,T!\e(B" "\e,TS\e(B" "\e,T4\e(B" "\e,T`\e(B"      ; ` .. g
+  "\e,Ti\e(B" "\e,TC\e(B" "\e,Th\e(B" "\e,TR\e(B" "\e,TJ\e(B" "\e,T7\e(B" "\e,TW\e(B" "\e,T9\e(B"      ; h .. o
+  "\e,TB\e(B" "\e,Tf\e(B" "\e,T>\e(B" "\e,TK\e(B" "\e,TP\e(B" "\e,TU\e(B" "\e,TM\e(B" "\e,Td\e(B"      ; p .. w
+  "\e,T;\e(B" "\e,TQ\e(B" "\e,T<\e(B" "\e,T0\e(B" "\e,To\e(B" "." "\e,T%\e(B" 0    ; x .. DEL
+  ])
 
 
 \f
@@ -108,24 +77,24 @@ The difference from the ordinal Thai keyboard:
 (quail-define-package
  "thai-pattachote" "Thai" "\e,T!;\e(B>" t
  "Thai Pattachote input method with TIS620 keyboard layout"
- nil t t t t nil nil nil 'quail-thai-update-translation nil t)
-
-(quail-install-map 
- (thai-generate-quail-map
-  [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0    ; control codes
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0    ; control codes
-    0 "+" "\e,T1\e(B" "/" "," "?" "_" "\e,T"\e(B"  ; SPC .. '
-    "(" ")" "." "%" "\e,TP\e(B" "\e,Tq\e(B" "\e,T(\e(B" "\e,T>\e(B"    ; ( .. /
-    "\e,Tp\e(B" "=" "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,Tu\e(B" "\e,TY\e(B" "\e,Tw\e(B"  ; 0 .. 7
-    "\e,Tx\e(B" "\e,Ty\e(B" "\e,T&\e(B" "\e,Td\e(B" "\e,T?\e(B" "\e,Tv\e(B" "\e,T2\e(B" "\e,TL\e(B"    ; 8 .. ?
-    "\"" "\e,Tk\e(B" "\e,TQ\e(B" "\e,T0\e(B" "\e,TS\e(B" "\e,Tf\e(B" "\e,T3\e(B" "\e,Tl\e(B" ; @ .. G
-    "\e,TW\e(B" "\e,T+\e(B" "\e,T<\e(B" "\e,T*\e(B" "\e,Tb\e(B" "\e,TN\e(B" "\e,TH\e(B" "\e,T6\e(B"    ; H .. O
-    "\e,T2\e(B" "\e,Tj\e(B" "\e,T-\e(B" "\e,T8\e(B" "\e,TI\e(B" "\e,T=\e(B" "\e,T@\e(B" "\e,TD\e(B"    ; P .. W
-    "\e,T.\e(B" "\e,TV\e(B" "\e,T.\e(B" "\e,Tc\e(B" "\e,TZ\e(B" "\e,T2\e(B" "\e,TX\e(B" "-"  ; X .. _
-    "\e,T#\e(B" "\e,Ti\e(B" "\e,TT\e(B" "\e,TE\e(B" "\e,T'\e(B" "\e,TB\e(B" "\e,T!\e(B" "\e,TQ\e(B"    ; ` .. g
-    "\e,TU\e(B" "\e,TA\e(B" "\e,TR\e(B" "\e,T9\e(B" "\e,T`\e(B" "\e,TJ\e(B" "\e,T$\e(B" "\e,TG\e(B"    ; h .. o
-    "\e,Ta\e(B" "\e,Tg\e(B" "\e,TM\e(B" "\e,T7\e(B" "\e,TC\e(B" "\e,T4\e(B" "\e,TK\e(B" "\e,T5\e(B"    ; p .. w
-    "\e,T;\e(B" "\e,Th\e(B" "\e,T:\e(B" "\e,TO\e(B" "\e,Tm\e(B" "\e,TF\e(B" "\e,T%\e(B" 0    ; x .. DEL
-    ]))
+ nil t t t t nil nil nil nil nil t)
+
+(thai-generate-quail-map
+ [
+  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0      ; control codes
+  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0      ; control codes
+  0 "+" "\e,T1\e(B" "/" "," "?" "_" "\e,T"\e(B"    ; SPC .. '
+  "(" ")" "." "%" "\e,TP\e(B" "\e,Tq\e(B" "\e,T(\e(B" "\e,T>\e(B"      ; ( .. /
+  "\e,Tp\e(B" "=" "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,Tu\e(B" "\e,TY\e(B" "\e,Tw\e(B"    ; 0 .. 7
+  "\e,Tx\e(B" "\e,Ty\e(B" "\e,T&\e(B" "\e,Td\e(B" "\e,T?\e(B" "\e,Tv\e(B" "\e,T2\e(B" "\e,TL\e(B"      ; 8 .. ?
+  "\"" "\e,Tk\e(B" "\e,TQ\e(B" "\e,T0\e(B" "\e,TS\e(B" "\e,Tf\e(B" "\e,T3\e(B" "\e,Tl\e(B"   ; @ .. G
+  "\e,TW\e(B" "\e,T+\e(B" "\e,T<\e(B" "\e,T*\e(B" "\e,Tb\e(B" "\e,TN\e(B" "\e,TH\e(B" "\e,T6\e(B"      ; H .. O
+  "\e,T2\e(B" "\e,Tj\e(B" "\e,T-\e(B" "\e,T8\e(B" "\e,TI\e(B" "\e,T=\e(B" "\e,T@\e(B" "\e,TD\e(B"      ; P .. W
+  "\e,T.\e(B" "\e,TV\e(B" "\e,T.\e(B" "\e,Tc\e(B" "\e,TZ\e(B" "\e,T2\e(B" "\e,TX\e(B" "-"    ; X .. _
+  "\e,T#\e(B" "\e,Ti\e(B" "\e,TT\e(B" "\e,TE\e(B" "\e,T'\e(B" "\e,TB\e(B" "\e,T!\e(B" "\e,TQ\e(B"      ; ` .. g
+  "\e,TU\e(B" "\e,TA\e(B" "\e,TR\e(B" "\e,T9\e(B" "\e,T`\e(B" "\e,TJ\e(B" "\e,T$\e(B" "\e,TG\e(B"      ; h .. o
+  "\e,Ta\e(B" "\e,Tg\e(B" "\e,TM\e(B" "\e,T7\e(B" "\e,TC\e(B" "\e,T4\e(B" "\e,TK\e(B" "\e,T5\e(B"      ; p .. w
+  "\e,T;\e(B" "\e,Th\e(B" "\e,T:\e(B" "\e,TO\e(B" "\e,Tm\e(B" "\e,TF\e(B" "\e,T%\e(B" 0              ; x .. DEL
+  ])
 
 ;;; thai.el ends here