;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
;; Licensed to the Free Software Foundation.
+;; Copyright (C) 2004
+;; National Institute of Advanced Industrial Science and Technology (AIST)
+;; Registration Number H14PRO021
;; Keywords: multilingual, input method, Lao
(compose-string (quail-lookup-map-and-concat quail-current-key))))
control-flag)
-(defconst lao-key-alist
+(defvar lao-key-alist
'(("!" . "1")
("\"" . "=")
("#" . "3")
("\\7" . "\e(1w\e(B")
("\\8" . "\e(1x\e(B")
("\\9" . "\e(1y\e(B")
- ))
-
-(defconst lao-consonant-key-alist nil)
-(defconst lao-semivowel-key-alist nil)
-(defconst lao-vowel-key-alist nil)
-(defconst lao-voweltone-key-alist nil)
-(defconst lao-tone-key-alist nil)
-(defconst lao-other-key-alist nil)
-
-(let ((tail lao-key-alist)
- elt phonetic-type)
- (while tail
- (setq elt (car tail) tail (cdr tail))
- (if (stringp (cdr elt))
- (setq phonetic-type (get-char-code-property (aref (cdr elt) 0)
+ )
+ "Alist of key sequences vs the corresponding Lao string to input.
+This variable is for the input method \"lao\".
+If you change the value of this variable while quail/lao is already loaded,
+you need to re-load it to properly re-initialize related alists.")
+
+;; Temporary variable to initialize lao-consonant-key-alist, etc.
+(defconst lao-key-alist-vector
+ (let ((tail lao-key-alist)
+ consonant-key-alist semivowel-key-alist vowel-key-alist
+ voweltone-key-alist tone-key-alist other-key-alist
+ elt phonetic-type)
+ (while tail
+ (setq elt (car tail) tail (cdr tail))
+ (if (stringp (cdr elt))
+ (setq phonetic-type (get-char-code-property (aref (cdr elt) 0)
+ 'phonetic-type))
+ (setq phonetic-type (get-char-code-property (aref (aref (cdr elt) 0) 0)
'phonetic-type))
- (setq phonetic-type (get-char-code-property (aref (aref (cdr elt) 0) 0)
- 'phonetic-type))
- (aset (cdr elt) 0 (compose-string (aref (cdr elt) 0))))
- (cond ((eq phonetic-type 'consonant)
- (setq lao-consonant-key-alist (cons elt lao-consonant-key-alist)))
- ((memq phonetic-type '(vowel-upper vowel-lower))
- (if (stringp (cdr elt))
- (setq lao-vowel-key-alist (cons elt lao-vowel-key-alist))
- (setq lao-voweltone-key-alist
- (cons elt lao-voweltone-key-alist))))
- ((eq phonetic-type 'tone)
- (setq lao-tone-key-alist (cons elt lao-tone-key-alist)))
- ((eq phonetic-type 'semivowel-lower)
- (setq lao-semivowel-key-alist (cons elt lao-semivowel-key-alist)))
- (t
- (setq lao-other-key-alist (cons elt lao-other-key-alist))))))
+ (aset (cdr elt) 0 (compose-string (aref (cdr elt) 0))))
+ (cond ((eq phonetic-type 'consonant)
+ (setq consonant-key-alist (cons elt consonant-key-alist)))
+ ((memq phonetic-type '(vowel-upper vowel-lower))
+ (if (stringp (cdr elt))
+ (setq vowel-key-alist (cons elt vowel-key-alist))
+ (setq voweltone-key-alist (cons elt voweltone-key-alist))))
+ ((eq phonetic-type 'tone)
+ (setq tone-key-alist (cons elt tone-key-alist)))
+ ((eq phonetic-type 'semivowel-lower)
+ (setq semivowel-key-alist (cons elt semivowel-key-alist)))
+ (t
+ (setq other-key-alist (cons elt other-key-alist)))))
+ (vector consonant-key-alist semivowel-key-alist vowel-key-alist
+ voweltone-key-alist tone-key-alist other-key-alist)))
+
+(defconst lao-consonant-key-alist (aref lao-key-alist-vector 0))
+(defconst lao-semivowel-key-alist (aref lao-key-alist-vector 1))
+(defconst lao-vowel-key-alist (aref lao-key-alist-vector 2))
+(defconst lao-voweltone-key-alist (aref lao-key-alist-vector 3))
+(defconst lao-tone-key-alist (aref lao-key-alist-vector 4))
+(defconst lao-other-key-alist (aref lao-key-alist-vector 5))
+
+;; Done with it.
+(makunbound 'lao-key-alist-vector)
(quail-define-package
"lao" "Lao" "\e(1E\e(B" t