From a3341d3c44c9dd4f8cfe2a6f3236f7f77cfd7842 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Sat, 4 Dec 2004 02:49:34 +0000 Subject: [PATCH] (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. --- leim/ChangeLog | 9 ++++++ leim/quail/lao.el | 79 ++++++++++++++++++++++++++++------------------- 2 files changed, 56 insertions(+), 32 deletions(-) diff --git a/leim/ChangeLog b/leim/ChangeLog index 7bff23067d6..df9923f6a29 100644 --- a/leim/ChangeLog +++ b/leim/ChangeLog @@ -1,3 +1,12 @@ +2004-12-04 Kenichi Handa + + * quail/lao.el (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. + 2004-09-25 Kenichi Handa * quail/uni-input.el (ucs-input-method): Add error clause to diff --git a/leim/quail/lao.el b/leim/quail/lao.el index 003cbb43be1..c5f66bba813 100644 --- a/leim/quail/lao.el +++ b/leim/quail/lao.el @@ -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") - )) - -(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" "(1E(B" t -- 2.39.2