changeset 58756:592861b6d3c5

(lao-key-alist): Declare it by defvar. (lao-key-alist-vector): New variable. (lao-consonant-key-alist, lao-semivowel-key-alist) (lao-vowel-key-alist, lao-voweltone-key-alist) (lao-tone-key-alist, lao-other-key-alist): Initialize them from lao-key-alist-vector.
author Kenichi Handa <handa@m17n.org>
date Sat, 04 Dec 2004 02:45:47 +0000
parents 3d69c011b6e1
children c420fc8d6e2c
files leim/quail/lao.el
diffstat 1 files changed, 46 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/leim/quail/lao.el	Sat Dec 04 01:08:08 2004 +0000
+++ b/leim/quail/lao.el	Sat Dec 04 02:45:47 2004 +0000
@@ -2,6 +2,9 @@
 
 ;; 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
 
@@ -42,7 +45,7 @@
 	  (compose-string (quail-lookup-map-and-concat quail-current-key))))
   control-flag)
 
-(defconst lao-key-alist
+(defvar lao-key-alist
   '(("!" . "1")
     ("\"" . "=")
     ("#" . "3")
@@ -146,38 +149,50 @@
     ("\\7" . "(1w(B")
     ("\\8" . "(1x(B")
     ("\\9" . "(1y(B")
-    ))
+    )
+  "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.")
 
-(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)
+;; 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" "(1E(B" t