comparison lisp/mule/cyrillic.el @ 771:943eaba38521

[xemacs-hg @ 2002-03-13 08:51:24 by ben] The big ben-mule-21-5 check-in! Various files were added and deleted. See CHANGES-ben-mule. There are still some test suite failures. No crashes, though. Many of the failures have to do with problems in the test suite itself rather than in the actual code. I'll be addressing these in the next day or so -- none of the test suite failures are at all critical. Meanwhile I'll be trying to address the biggest issues -- i.e. build or run failures, which will almost certainly happen on various platforms. All comments should be sent to ben@xemacs.org -- use a Cc: if necessary when sending to mailing lists. There will be pre- and post- tags, something like pre-ben-mule-21-5-merge-in, and post-ben-mule-21-5-merge-in.
author ben
date Wed, 13 Mar 2002 08:54:06 +0000
parents 576fb035e263
children 2923009caf47
comparison
equal deleted inserted replaced
770:336a418893b5 771:943eaba38521
1 ;;; cyrillic.el --- Support for Cyrillic -*- coding: iso-2022-7bit; -*- 1 ;;; cyrillic.el --- Support for Cyrillic -*- coding: iso-2022-7bit; -*-
2 2
3 ;; Copyright (C) 1995,1999 Electrotechnical Laboratory, JAPAN. 3 ;; Copyright (C) 1995,1999 Electrotechnical Laboratory, JAPAN.
4 ;; Licensed to the Free Software Foundation. 4 ;; Licensed to the Free Software Foundation.
5 ;; Copyright (C) 1997 MORIOKA Tomohiko 5 ;; Copyright (C) 1997 MORIOKA Tomohiko
6 ;; Copyright (C) 2001 Ben Wing.
6 7
7 ;; Keywords: multilingual, Cyrillic 8 ;; Keywords: multilingual, Cyrillic
8 9
9 ;; This file is part of XEmacs. 10 ;; This file is part of XEmacs.
10 11
23 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 24 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
24 ;; 02111-1307, USA. 25 ;; 02111-1307, USA.
25 26
26 ;;; Commentary: 27 ;;; Commentary:
27 28
28 ;; The character set ISO8859-5 is supported. 29 ;; The character set ISO8859-5 is supported. KOI-8 and ALTERNATIVNYJ are
29 ;; KOI-8, Windows-1251, and ALTERNATIVNYJ are converted to ISO8859-5 30 ;; converted to ISO8859-5 internally.
30 ;; internally. 31
32 ;; Windows-1251 support deleted because XEmacs has automatic support.
31 33
32 ;;; Code: 34 ;;; Code:
33 35
34 ;; Cyrillic syntax 36 ;; Cyrillic syntax
35 (modify-syntax-entry 'cyrillic-iso8859-5 "w") 37 (modify-syntax-entry 'cyrillic-iso8859-5 "w")
43 45
44 ;; ISO-8859-5 46 ;; ISO-8859-5
45 47
46 (make-coding-system 48 (make-coding-system
47 'iso-8859-5 'iso2022 49 'iso-8859-5 'iso2022
48 "ISO-8859-5 (ISO 2022 based 8-bit encoding for Cyrillic script)" 50 "ISO-8859-5 (Cyrillic)"
49 '(charset-g0 ascii 51 '(charset-g0 ascii
50 charset-g1 cyrillic-iso8859-5 52 charset-g1 cyrillic-iso8859-5
51 charset-g2 t 53 charset-g2 t
52 charset-g3 t 54 charset-g3 t
53 mnemonic "ISO8/Cyr" 55 mnemonic "ISO8/Cyr"
127 ;; (define-coding-system-alias 'koi8-r 'cyrillic-koi8) 129 ;; (define-coding-system-alias 'koi8-r 'cyrillic-koi8)
128 ;; (define-coding-system-alias 'koi8 'cyrillic-koi8) 130 ;; (define-coding-system-alias 'koi8 'cyrillic-koi8)
129 131
130 (make-coding-system 132 (make-coding-system
131 'koi8-r 'ccl 133 'koi8-r 'ccl
132 "KOI8-R 8-bit encoding for Cyrillic." 134 "KOI8-R (Cyrillic)"
133 '(decode ccl-decode-koi8 135 '(decode ccl-decode-koi8
134 encode ccl-encode-koi8 136 encode ccl-encode-koi8
135 mnemonic "KOI8")) 137 mnemonic "KOI8"))
136 138
137 ;; `iso-8-1' is not correct, but XEmacs doesn't have a `ccl' category 139 ;; `iso-8-1' is not correct, but XEmacs doesn't have a `ccl' category
154 "Cyrillic-KOI8" '((charset cyrillic-iso8859-5) 156 "Cyrillic-KOI8" '((charset cyrillic-iso8859-5)
155 (coding-system koi8-r) 157 (coding-system koi8-r)
156 (coding-priority koi8-r) 158 (coding-priority koi8-r)
157 (input-method . "cyrillic-yawerty") 159 (input-method . "cyrillic-yawerty")
158 (features cyril-util) 160 (features cyril-util)
161 (locale "ru")
162 (mswindows-locale . "RUSSIAN")
159 (tutorial . "TUTORIAL.ru") 163 (tutorial . "TUTORIAL.ru")
160 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!") 164 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
161 (documentation . "Support for Cyrillic KOI8-R.")) 165 (documentation . "Support for Cyrillic KOI8-R."))
162 '("Cyrillic")) 166 '("Cyrillic"))
163 167
164 ;;; WINDOWS-1251 168 ;;; WINDOWS-1251 deleted; we support it automatically in XEmacs
165
166 (eval-and-compile
167
168 (defvar cyrillic-windows-1251-decode-table
169 [
170 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
171 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
172 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
173 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
174 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
175 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
176 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
177 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
178 ?,L"(B ?,L#(B 32 ?,Ls(B 32 32 32 32 32 32 ?,L)(B 32 ?,L*(B ?,L,(B ?,L+(B ?,L/(B ;"
179 ?,Lr(B 32 32 32 32 32 32 32 32 32 ?,Ly(B 32 ?,Lz(B ?,L|(B ?,L{(B ?,L(B
180 ?,L (B ?,L.(B ?,L~(B ?,L((B ?,A$(B 32 ?,A&(B ?,L}(B ?,L!(B ?,A)(B ?,L$(B ?,A+(B ?,A,(B ?,L-(B ?,A.(B ?,L'(B
181 ?,A0(B ?,A1(B ?,L&(B ?,Lv(B 32 ?,A5(B ?,A6(B ?,A7(B ?,Lq(B ?,Lp(B ?,Lt(B ?,A;(B ?,Lx(B ?,L%(B ?,Lu(B ?,Lw(B
182 ?,L0(B ?,L1(B ?,L2(B ?,L3(B ?,L4(B ?,L5(B ?,L6(B ?,L7(B ?,L8(B ?,L9(B ?,L:(B ?,L;(B ?,L<(B ?,L=(B ?,L>(B ?,L?(B
183 ?,L@(B ?,LA(B ?,LB(B ?,LC(B ?,LD(B ?,LE(B ?,LF(B ?,LG(B ?,LH(B ?,LI(B ?,LJ(B ?,LK(B ?,LL(B ?,LM(B ?,LN(B ?,LO(B
184 ?,LP(B ?,LQ(B ?,LR(B ?,LS(B ?,LT(B ?,LU(B ?,LV(B ?,LW(B ?,LX(B ?,LY(B ?,LZ(B ?,L[(B ?,L\(B ?,L](B ?,L^(B ?,L_(B
185 ?,L`(B ?,La(B ?,Lb(B ?,Lc(B ?,Ld(B ?,Le(B ?,Lf(B ?,Lg(B ?,Lh(B ?,Li(B ?,Lj(B ?,Lk(B ?,Ll(B ?,Lm(B ?,Ln(B ?,Lo(B ]
186 "Cyrillic Windows-1251 decoding table.")
187
188 (defvar cyrillic-windows-1251-encode-table
189 (let ((table (make-vector 256 32))
190 (i 0))
191 (while (< i 256)
192 (let* ((ch (aref cyrillic-windows-1251-decode-table i))
193 (split (split-char ch)))
194 (cond ((eq (car split) 'cyrillic-iso8859-5)
195 (aset table (logior (nth 1 split) 128) i)
196 )
197 ((eq ch 32))
198 ((eq (car split) 'ascii)
199 (aset table ch i)
200 )))
201 (setq i (1+ i)))
202 table)
203 "Cyrillic Windows-1251 encoding table.")
204
205 )
206
207 (define-ccl-program ccl-decode-windows1251
208 `(3
209 ((read r0)
210 (loop
211 (write-read-repeat r0 ,cyrillic-windows-1251-decode-table))))
212 "CCL program to decode Windows-1251.")
213
214 (define-ccl-program ccl-encode-windows1251
215 `(1
216 ((read r0)
217 (loop
218 (if (r0 != ,(charset-id 'cyrillic-iso8859-5))
219 (write-read-repeat r0)
220 ((read r0)
221 (write-read-repeat r0 , cyrillic-windows-1251-encode-table))))))
222 "CCL program to encode Windows-1251.")
223
224 (make-coding-system
225 'windows-1251 'ccl
226 "Coding-system used for Windows-1251."
227 '(decode ccl-decode-windows1251
228 encode ccl-encode-windows1251
229 mnemonic "CyrW"))
230
231 ;; `iso-8-1' is not correct, but XEmacs doesn't have a `ccl' category
232 (coding-system-put 'windows-1251 'category 'iso-8-1)
233
234 (set-language-info-alist
235 "Cyrillic-Win" '((charset cyrillic-iso8859-5)
236 (coding-system windows-1251)
237 (coding-priority windows-1251)
238 (input-method . "cyrillic-yawerty")
239 (features cyril-util)
240 (tutorial . "TUTORIAL.ru")
241 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
242 (documentation . "Support for Cyrillic Windows-1251."))
243 '("Cyrillic"))
244 169
245 ;;; ALTERNATIVNYJ 170 ;;; ALTERNATIVNYJ
246 171
247 (eval-and-compile 172 (eval-and-compile
248 173
302 227
303 ;; (define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj) 228 ;; (define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj)
304 229
305 (make-coding-system 230 (make-coding-system
306 'alternativnyj 'ccl 231 'alternativnyj 'ccl
307 "Coding-system used for Alternativnyj" 232 "Alternativnyj (Cyrillic)"
308 '(decode ccl-decode-alternativnyj 233 '(decode ccl-decode-alternativnyj
309 encode ccl-encode-alternativnyj 234 encode ccl-encode-alternativnyj
310 mnemonic "Cy.Alt")) 235 mnemonic "Cy.Alt"))
311 236
312 ;; `iso-8-1' is not correct, but XEmacs doesn't have `ccl' category 237 ;; `iso-8-1' is not correct, but XEmacs doesn't have `ccl' category