diff options
| author | Kenichi Handa | 2000-06-06 02:09:30 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2000-06-06 02:09:30 +0000 |
| commit | 0d833551c738ba7ba90243d400264e9cb9fddd1e (patch) | |
| tree | 9320f87fe2ddd1b7a52f502c4d2cc546bf7fcf6b | |
| parent | 10cda9b031e98e68f6fd9364874e775f57e90108 (diff) | |
| download | emacs-0d833551c738ba7ba90243d400264e9cb9fddd1e.tar.gz emacs-0d833551c738ba7ba90243d400264e9cb9fddd1e.zip | |
Remove eval-when-compile.
(viet-viscii-nonascii-translation-table): Define it as a
translation table made from viet-viscii-decode-table.
(viet-viscii-encode-table): Define it as a translation table made
from the reverse map of above.
(viet-vscii-nonascii-translation-table): Define it as a
translation table made from viet-vscii-decode-table.
(viet-vscii-encode-table): Define it as a translation table made
from the reverse map of above.
(ccl-decode-viscii): Use translate-character.
(ccl-encode-viscii, ccl-encode-viscii-font)
(ccl-decode-vscii, ccl-encode-vscii, ccl-encode-vscii-font):
Likewize.
| -rw-r--r-- | lisp/language/vietnamese.el | 140 |
1 files changed, 34 insertions, 106 deletions
diff --git a/lisp/language/vietnamese.el b/lisp/language/vietnamese.el index 7369100c410..af64856d1f1 100644 --- a/lisp/language/vietnamese.el +++ b/lisp/language/vietnamese.el | |||
| @@ -28,8 +28,6 @@ | |||
| 28 | 28 | ||
| 29 | ;;; Code: | 29 | ;;; Code: |
| 30 | 30 | ||
| 31 | (eval-and-compile | ||
| 32 | |||
| 33 | (defvar viet-viscii-decode-table | 31 | (defvar viet-viscii-decode-table |
| 34 | [;; VISCII is a full 8-bit code. | 32 | [;; VISCII is a full 8-bit code. |
| 35 | 0 1 ?,2F(B 3 4 ?,2G(B ?,2g(B 7 8 9 10 11 12 13 14 15 | 33 | 0 1 ?,2F(B 3 4 ?,2G(B ?,2g(B 7 8 9 10 11 12 13 14 15 |
| @@ -50,22 +48,10 @@ | |||
| 50 | ?,1p(B ?,1q(B ?,1r(B ?,1s(B ?,1t(B ?,1u(B ?,1v(B ?,1w(B ?,1x(B ?,1y(B ?,1z(B ?,1{(B ?,1|(B ?,1}(B ?,1~(B ?,2f(B ] | 48 | ?,1p(B ?,1q(B ?,1r(B ?,1s(B ?,1t(B ?,1u(B ?,1v(B ?,1w(B ?,1x(B ?,1y(B ?,1z(B ?,1{(B ?,1|(B ?,1}(B ?,1~(B ?,2f(B ] |
| 51 | "Vietnamese VISCII decoding table.") | 49 | "Vietnamese VISCII decoding table.") |
| 52 | 50 | ||
| 53 | (defvar viet-viscii-encode-table | 51 | (let ((table (make-translation-table-from-vector viet-viscii-decode-table))) |
| 54 | (let ((table-lower (make-vector 128 0)) | 52 | (define-translation-table 'viet-viscii-nonascii-translation-table table) |
| 55 | (table-upper (make-vector 128 0)) | 53 | (define-translation-table 'viet-viscii-encode-table |
| 56 | (i 0) | 54 | (char-table-extra-slot table 0))) |
| 57 | char-component) | ||
| 58 | (while (< i 256) | ||
| 59 | (setq char-component (split-char (aref viet-viscii-decode-table i))) | ||
| 60 | (cond ((eq (car char-component) 'vietnamese-viscii-lower) | ||
| 61 | (aset table-lower (nth 1 char-component) i)) | ||
| 62 | ((eq (car char-component) 'vietnamese-viscii-upper) | ||
| 63 | (aset table-upper (nth 1 char-component) i))) | ||
| 64 | (setq i (1+ i))) | ||
| 65 | (cons table-lower table-upper)) | ||
| 66 | "Vietnamese VISCII encoding table. | ||
| 67 | Cons of tables for encoding lower-case chars and upper-case characters. | ||
| 68 | Both tables are indexed by the position code of Vietnamese characters.") | ||
| 69 | 55 | ||
| 70 | (defvar viet-vscii-decode-table | 56 | (defvar viet-vscii-decode-table |
| 71 | [;; VSCII is a full 8-bit code. | 57 | [;; VSCII is a full 8-bit code. |
| @@ -87,61 +73,27 @@ Both tables are indexed by the position code of Vietnamese characters.") | |||
| 87 | ?,22(B ?,1|(B ?,1{(B ?,1z(B ?,1x(B ?,1W(B ?,1X(B ?,1f(B ?,1Q(B ?,1q(B ?,1O(B ?,1V(B ?,1[(B ?,1}(B ?,1\(B ?,2/(B] | 73 | ?,22(B ?,1|(B ?,1{(B ?,1z(B ?,1x(B ?,1W(B ?,1X(B ?,1f(B ?,1Q(B ?,1q(B ?,1O(B ?,1V(B ?,1[(B ?,1}(B ?,1\(B ?,2/(B] |
| 88 | "Vietnamese VSCII decoding table.") | 74 | "Vietnamese VSCII decoding table.") |
| 89 | 75 | ||
| 90 | (defvar viet-vscii-encode-table | 76 | (let ((table (make-translation-table-from-vector viet-vscii-decode-table))) |
| 91 | (let ((table-lower (make-vector 128 0)) | 77 | (define-translation-table 'viet-vscii-nonascii-translation-table table) |
| 92 | (table-upper (make-vector 128 0)) | 78 | (define-translation-table 'viet-vscii-encode-table |
| 93 | (i 0) | 79 | (char-table-extra-slot table 0))) |
| 94 | char-component) | ||
| 95 | (while (< i 256) | ||
| 96 | (setq char-component (split-char (aref viet-vscii-decode-table i))) | ||
| 97 | (cond ((eq (car char-component) 'vietnamese-viscii-lower) | ||
| 98 | (aset table-lower (nth 1 char-component) i)) | ||
| 99 | ((eq (car char-component) 'vietnamese-viscii-upper) | ||
| 100 | (aset table-upper (nth 1 char-component) i))) | ||
| 101 | (setq i (1+ i))) | ||
| 102 | (cons table-lower table-upper)) | ||
| 103 | "Vietnamese VSCII encoding table. | ||
| 104 | Cons of tables for encoding lower-case chars and upper-case characters. | ||
| 105 | Both tables are indexed by the position code of Vietnamese characters.") | ||
| 106 | |||
| 107 | ) | ||
| 108 | 80 | ||
| 109 | (define-ccl-program ccl-decode-viscii | 81 | (define-ccl-program ccl-decode-viscii |
| 110 | `(3 | 82 | `(3 |
| 111 | ((read r0) | 83 | ((loop |
| 112 | (loop | 84 | (r0 = 0) |
| 113 | (write-read-repeat r0 ,viet-viscii-decode-table)) | 85 | (read r1) |
| 114 | )) | 86 | (translate-character viet-viscii-nonascii-translation-table r0 r1) |
| 87 | (write-multibyte-character r0 r1) | ||
| 88 | (repeat)))) | ||
| 115 | "CCL program to decode VISCII 1.1") | 89 | "CCL program to decode VISCII 1.1") |
| 116 | 90 | ||
| 117 | ;; Multibyte form of a Vietnamese character is as follows (3-byte): | ||
| 118 | ;; LEADING-CODE-PRIVATE-11 LEADING-CODE-EXTENDED-11 POSITION-CODE | ||
| 119 | ;; where LEADING-CODE-EXTENDED-11 for Vietnamese is | ||
| 120 | ;; `vietnamese-viscii-lower' or `vietnamese-viscii-upper'. | ||
| 121 | |||
| 122 | (define-ccl-program ccl-encode-viscii | 91 | (define-ccl-program ccl-encode-viscii |
| 123 | `(1 | 92 | `(1 |
| 124 | ((read r0) | 93 | ((loop |
| 125 | (loop | 94 | (read-multibyte-character r0 r1) |
| 126 | (if (r0 < 128) | 95 | (translate-character viet-viscii-encode-table r0 r1) |
| 127 | ;; ASCII | 96 | (write-repeat r1)))) |
| 128 | (write-read-repeat r0) | ||
| 129 | ;; not ASCII | ||
| 130 | (if (r0 != ,leading-code-private-11) | ||
| 131 | ;; not Vietnamese | ||
| 132 | (write-read-repeat r0) | ||
| 133 | ((read-if (r0 == ,(charset-id 'vietnamese-viscii-lower)) | ||
| 134 | (;; Vietnamese lower | ||
| 135 | (read r0) | ||
| 136 | (r0 -= 128) | ||
| 137 | (write-read-repeat r0 ,(car viet-viscii-encode-table))) | ||
| 138 | (if (r0 == ,(charset-id 'vietnamese-viscii-upper)) | ||
| 139 | (;; Vietnamese upper | ||
| 140 | (read r0) | ||
| 141 | (r0 -= 128) | ||
| 142 | (write-read-repeat r0 ,(cdr viet-viscii-encode-table))) | ||
| 143 | ;; not Vietnamese | ||
| 144 | (write-read-repeat r0))))))))) | ||
| 145 | "CCL program to encode VISCII 1.1") | 97 | "CCL program to encode VISCII 1.1") |
| 146 | 98 | ||
| 147 | (define-ccl-program ccl-encode-viscii-font | 99 | (define-ccl-program ccl-encode-viscii-font |
| @@ -149,43 +101,25 @@ Both tables are indexed by the position code of Vietnamese characters.") | |||
| 149 | ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper | 101 | ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper |
| 150 | ;; R1:position code | 102 | ;; R1:position code |
| 151 | ;; Out: R1:font code point | 103 | ;; Out: R1:font code point |
| 152 | (if (r0 == ,(charset-id 'vietnamese-viscii-lower)) | 104 | (translate-character viet-viscii-encode-table r0 r1)) |
| 153 | (r1 = r1 ,(car viet-viscii-encode-table)) | ||
| 154 | (r1 = r1 ,(cdr viet-viscii-encode-table))) | ||
| 155 | ) | ||
| 156 | "CCL program to encode Vietnamese chars to VISCII 1.1 font") | 105 | "CCL program to encode Vietnamese chars to VISCII 1.1 font") |
| 157 | 106 | ||
| 158 | (define-ccl-program ccl-decode-vscii | 107 | (define-ccl-program ccl-decode-vscii |
| 159 | `(3 | 108 | `(3 |
| 160 | ((read r0) | 109 | ((loop |
| 161 | (loop | 110 | (r0 = 0) |
| 162 | (write-read-repeat r0 ,viet-vscii-decode-table)) | 111 | (read r1) |
| 163 | )) | 112 | (translate-character viet-vscii-nonascii-translation-table r0 r1) |
| 113 | (write-multibyte-character r0 r1) | ||
| 114 | (repeat)))) | ||
| 164 | "CCL program to decode VSCII-1.") | 115 | "CCL program to decode VSCII-1.") |
| 165 | 116 | ||
| 166 | (define-ccl-program ccl-encode-vscii | 117 | (define-ccl-program ccl-encode-vscii |
| 167 | `(1 | 118 | `(1 |
| 168 | ((read r0) | 119 | ((loop |
| 169 | (loop | 120 | (read-multibyte-character r0 r1) |
| 170 | (if (r0 < 128) | 121 | (translate-character viet-vscii-encode-table r0 r1) |
| 171 | ;; ASCII | 122 | (write-repeat r1)))) |
| 172 | (write-read-repeat r0) | ||
| 173 | ;; not ASCII | ||
| 174 | (if (r0 != ,leading-code-private-11) | ||
| 175 | ;; not Vietnamese | ||
| 176 | (write-read-repeat r0) | ||
| 177 | (read-if (r0 == ,(charset-id 'vietnamese-viscii-lower)) | ||
| 178 | (;; Vietnamese lower | ||
| 179 | (read r0) | ||
| 180 | (r0 -= 128) | ||
| 181 | (write-read-repeat r0 ,(car viet-vscii-encode-table))) | ||
| 182 | (if (r0 == ,(charset-id 'vietnamese-viscii-upper)) | ||
| 183 | (;; Vietnamese upper | ||
| 184 | (read r0) | ||
| 185 | (r0 -= 128) | ||
| 186 | (write-read-repeat r0 ,(cdr viet-vscii-encode-table))) | ||
| 187 | ;; not Vietnamese | ||
| 188 | (write-read-repeat r0)))))))) | ||
| 189 | "CCL program to encode VSCII-1.") | 123 | "CCL program to encode VSCII-1.") |
| 190 | 124 | ||
| 191 | (define-ccl-program ccl-encode-vscii-font | 125 | (define-ccl-program ccl-encode-vscii-font |
| @@ -193,10 +127,7 @@ Both tables are indexed by the position code of Vietnamese characters.") | |||
| 193 | ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper | 127 | ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper |
| 194 | ;; R1:position code | 128 | ;; R1:position code |
| 195 | ;; Out: R1:font code point | 129 | ;; Out: R1:font code point |
| 196 | (if (r0 == ,(charset-id 'vietnamese-viscii-lower)) | 130 | (translate-character viet-vscii-encode-table r0 r1)) |
| 197 | (r1 = r1 ,(car viet-vscii-encode-table)) | ||
| 198 | (r1 = r1 ,(cdr viet-vscii-encode-table))) | ||
| 199 | ) | ||
| 200 | "CCL program to encode Vietnamese chars to VSCII-1 font.") | 131 | "CCL program to encode Vietnamese chars to VSCII-1 font.") |
| 201 | 132 | ||
| 202 | 133 | ||
| @@ -234,19 +165,16 @@ Both tables are indexed by the position code of Vietnamese characters.") | |||
| 234 | (define-coding-system-alias 'viqr 'vietnamese-viqr) | 165 | (define-coding-system-alias 'viqr 'vietnamese-viqr) |
| 235 | 166 | ||
| 236 | (setq font-ccl-encoder-alist | 167 | (setq font-ccl-encoder-alist |
| 237 | (cons (cons "viscii" ccl-encode-viscii-font) font-ccl-encoder-alist)) | 168 | (cons '("viscii" . ccl-encode-viscii-font) font-ccl-encoder-alist)) |
| 238 | 169 | ||
| 239 | (setq font-ccl-encoder-alist | 170 | (setq font-ccl-encoder-alist |
| 240 | (cons (cons "vscii" ccl-encode-vscii-font) font-ccl-encoder-alist)) | 171 | (cons '("vscii" . ccl-encode-vscii-font) font-ccl-encoder-alist)) |
| 241 | |||
| 242 | (defvar viet-viscii-nonascii-translation-table | ||
| 243 | (make-translation-table-from-vector viet-viscii-decode-table) | ||
| 244 | "Value of `nonascii-translation-table' in Vietnamese language environment.") | ||
| 245 | 172 | ||
| 246 | (set-language-info-alist | 173 | (set-language-info-alist |
| 247 | "Vietnamese" `((charset vietnamese-viscii-lower vietnamese-viscii-upper) | 174 | "Vietnamese" `((charset vietnamese-viscii-lower vietnamese-viscii-upper) |
| 248 | (nonascii-translation | 175 | (nonascii-translation |
| 249 | . ,viet-viscii-nonascii-translation-table) | 176 | . ,(get 'viet-viscii-nonascii-translation-table |
| 177 | 'translation-table)) | ||
| 250 | (coding-system vietnamese-viscii vietnamese-vscii | 178 | (coding-system vietnamese-viscii vietnamese-vscii |
| 251 | vietnamese-viqr) | 179 | vietnamese-viqr) |
| 252 | (coding-priority vietnamese-viscii) | 180 | (coding-priority vietnamese-viscii) |