Mercurial > hg > xemacs-beta
comparison lisp/mule/cyrillic.el @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | 74fd4e045ea6 |
children | ebe98a74bd68 |
comparison
equal
deleted
inserted
replaced
411:12e008d41344 | 412:697ef44129c6 |
---|---|
1 ;;; cyrillic.el --- Support for Cyrillic -*- coding: iso-2022-7bit; -*- | 1 ;;; cyrillic.el --- Support for languages which use Cyrillic characters |
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 | 6 |
30 | 30 |
31 ;;; Code: | 31 ;;; Code: |
32 | 32 |
33 ;; For syntax of Cyrillic | 33 ;; For syntax of Cyrillic |
34 (modify-syntax-entry 'cyrillic-iso8859-5 "w") | 34 (modify-syntax-entry 'cyrillic-iso8859-5 "w") |
35 (modify-syntax-entry ?,L-(B ".") | 35 (modify-syntax-entry ?.LN- ".") |
36 (modify-syntax-entry ?,Lp(B ".") | 36 (modify-syntax-entry ?.LNp ".") |
37 (modify-syntax-entry ?,L}(B ".") | 37 (modify-syntax-entry ?.LN} ".") |
38 | 38 |
39 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 39 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
40 ;;; CYRILLIC | 40 ;;; CYRILLIC |
41 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 41 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
42 | 42 |
43 ;; (define-prefix-command 'describe-cyrillic-environment-map) | |
44 ;; (define-key-after describe-language-environment-map [Cyrillic] | |
45 ;; '("Cyrillic" . describe-cyrillic-environment-map) | |
46 ;; t) | |
47 | |
48 ;; (define-prefix-command 'setup-cyrillic-environment-map) | |
49 ;; (define-key-after setup-language-environment-map [Cyrillic] | |
50 ;; '("Cyrillic" . setup-cyrillic-environment-map) | |
51 ;; t) | |
52 | |
53 | |
43 ;; ISO-8859-5 staff | 54 ;; ISO-8859-5 staff |
44 | 55 |
45 ;; (make-coding-system | 56 ;; (make-coding-system |
46 ;; 'cyrillic-iso-8bit 2 ?5 | 57 ;; 'cyrillic-iso-8bit 2 ?5 |
47 ;; "ISO 2022 based 8-bit encoding for Cyrillic script (MIME:ISO-8859-5)" | 58 ;; "ISO 2022 based 8-bit encoding for Cyrillic script (MIME:ISO-8859-5)" |
48 ;; '(ascii cyrillic-iso8859-5 nil nil | 59 ;; '((ascii t) (cyrillic-iso8859-5 t) nil nil |
49 ;; nil nil nil nil nil nil nil) | 60 ;; nil ascii-eol ascii-cntl nil nil nil nil)) |
50 ;; '((safe-charsets ascii cyrillic-iso8859-5) | |
51 ;; (mime-charset . iso-8859-5))) | |
52 | 61 |
53 ;; (define-coding-system-alias 'iso-8859-5 'cyrillic-iso-8bit) | 62 ;; (define-coding-system-alias 'iso-8859-5 'cyrillic-iso-8bit) |
54 | 63 |
55 (make-coding-system | 64 (make-coding-system |
56 'iso-8859-5 'iso2022 | 65 'iso-8859-5 'iso2022 |
61 charset-g3 t | 70 charset-g3 t |
62 mnemonic "ISO8/Cyr" | 71 mnemonic "ISO8/Cyr" |
63 )) | 72 )) |
64 | 73 |
65 (set-language-info-alist | 74 (set-language-info-alist |
66 "Cyrillic-ISO" '((charset cyrillic-iso8859-5) | 75 "Cyrillic-ISO" '((setup-function . (setup-cyrillic-iso-environment |
76 . setup-cyrillic-environment-map)) | |
77 (charset . (cyrillic-iso8859-5)) | |
67 (tutorial . "TUTORIAL.ru") | 78 (tutorial . "TUTORIAL.ru") |
68 (coding-system iso-8859-5) | 79 (coding-system . (iso-8859-5)) |
69 (coding-priority iso-8859-5) | 80 (sample-text . "Russian (.LN@NcNaNaNZNXNY) N7NTN`NPNRNaNbNRNcNYNbNU!") |
70 (input-method . "cyrillic-yawerty") | 81 (documentation . ("Support for Cyrillic ISO-8859-5." |
71 (features cyril-util) | 82 . describe-cyrillic-environment-map)))) |
72 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!") | |
73 (documentation . "Support for Cyrillic ISO-8859-5.")) | |
74 '("Cyrillic")) | |
75 | 83 |
76 ;; KOI-8 staff | 84 ;; KOI-8 staff |
77 | 85 |
78 (eval-and-compile | 86 (eval-and-compile |
79 | 87 |
86 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 94 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
87 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 95 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
88 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | 96 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
89 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | 97 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
90 ?$B(!(B ?$B("(B ?$B(#(B ?$B($(B ?$B(&(B ?$B(%(B ?$B('(B ?$B()(B ?$B(((B ?$B(*(B ?$B(+(B 32 ?$(G#'(B ?$(G#+(B ?$(G#/(B 32 | 98 ?$B(!(B ?$B("(B ?$B(#(B ?$B($(B ?$B(&(B ?$B(%(B ?$B('(B ?$B()(B ?$B(((B ?$B(*(B ?$B(+(B 32 ?$(G#'(B ?$(G#+(B ?$(G#/(B 32 |
91 32 ?$(C"F(B 32 32 ?$B"#(B 32 ?$B"e(B ?$A!V(B ?$A!\(B ?$A!](B ?,L (B 32 ?,A0(B ?,A2(B ?,A7(B ?,Aw(B | 99 144 ?$(C"F(B 146 147 ?$B"#(B 149 ?$B"e(B ?$A!V(B ?$A!\(B ?$A!](B ?.AN 32 ?N0 ?N2 ?N7 ?Nw |
92 ?$(G#D(B 32 32 ?,Lq(B 32 32 32 32 32 32 32 32 32 32 32 ?$(G#E(B | 100 ?$(G#D(B 32 32 ?.LNq 32 32 32 32 32 32 32 32 32 32 32 ?$(G#E(B |
93 32 32 ?$(G#G(B ?,L!(B 32 32 32 32 32 32 32 32 ?$(G#F(B 32 32 ?,A)(B | 101 32 32 ?$(G#G(B ?.LN! 32 32 32 32 32 32 32 32 ?$(G#F(B 32 32 ?.AN) |
94 ?,Ln(B ?,LP(B ?,LQ(B ?,Lf(B ?,LT(B ?,LU(B ?,Ld(B ?,LS(B ?,Le(B ?,LX(B ?,LY(B ?,LZ(B ?,L[(B ?,L\(B ?,L](B ?,L^(B | 102 ?.LNn ?NP ?NQ ?Nf ?NT ?NU ?Nd ?NS ?Ne ?NX ?NY ?NZ ?N[ ?N\ ?N] ?N^ |
95 ?,L_(B ?,Lo(B ?,L`(B ?,La(B ?,Lb(B ?,Lc(B ?,LV(B ?,LR(B ?,Ll(B ?,Lk(B ?,LW(B ?,Lh(B ?,Lm(B ?,Li(B ?,Lg(B ?,Lj(B | 103 ?.LN_ ?No ?N` ?Na ?Nb ?Nc ?NV ?NR ?Nl ?Nk ?NW ?Nh ?Nm ?Ni ?Ng ?Nj |
96 ?,LN(B ?,L0(B ?,L1(B ?,LF(B ?,L4(B ?,L5(B ?,LD(B ?,L3(B ?,LE(B ?,L8(B ?,L9(B ?,L:(B ?,L;(B ?,L<(B ?,L=(B ?,L>(B | 104 ?.LNN ?N0 ?N1 ?NF ?N4 ?N5 ?ND ?N3 ?NE ?N8 ?N9 ?N: ?N; ?N< ?N= ?N> |
97 ?,L?(B ?,LO(B ?,L@(B ?,LA(B ?,LB(B ?,LC(B ?,L6(B ?,L2(B ?,LL(B ?,LK(B ?,L7(B ?,LH(B ?,LM(B ?,LI(B ?,LG(B ?,LJ(B ] | 105 ?.LN? ?NO ?N@ ?NA ?NB ?NC ?N6 ?N2 ?NL ?NK ?N7 ?NH ?NM ?NI ?NG ?NJ ] |
98 "Cyrillic KOI8-R decoding table.") | 106 "Cyrillic KOI8-R decoding table.") |
99 | 107 |
100 (defvar cyrillic-koi8-r-encode-table | 108 (defvar cyrillic-koi8-r-encode-table |
101 (let ((table (make-vector 256 32)) | 109 (let ((table (make-vector 256 32)) |
102 (i 0)) | 110 (i 0)) |
103 (while (< i 256) | 111 (while (< i 256) |
104 (let* ((ch (aref cyrillic-koi8-r-decode-table i)) | 112 (let* ((ch (aref cyrillic-koi8-r-decode-table i)) |
105 (split (split-char ch))) | 113 (split (split-char-or-char-int ch))) |
106 (cond ((eq (car split) 'cyrillic-iso8859-5) | 114 (cond ((eq (car split) 'cyrillic-iso8859-5) |
107 (aset table (logior (nth 1 split) 128) i) | 115 (aset table (logior (nth 1 split) 128) i) |
108 ) | 116 ) |
109 ((eq ch 32)) | 117 ((eq ch 32)) |
110 ((eq (car split) 'ascii) | 118 ((eq (car split) 'ascii) |
131 (write-read-repeat r0) | 139 (write-read-repeat r0) |
132 ((read r0) | 140 ((read r0) |
133 (write-read-repeat r0 , cyrillic-koi8-r-encode-table)))))) | 141 (write-read-repeat r0 , cyrillic-koi8-r-encode-table)))))) |
134 "CCL program to encode KOI8.") | 142 "CCL program to encode KOI8.") |
135 | 143 |
136 ;; (make-coding-system | 144 ;(make-coding-system |
137 ;; 'cyrillic-koi8 4 | 145 ; 'cyrillic-koi8 4 |
138 ;; ;; We used to use ?K. It is true that ?K is more strictly correct, | 146 ; ;; We used to use ?K. It is true that ?K is more strictly correct, |
139 ;; ;; but it is also used for Korean. | 147 ; ;; but it is also used for Korean. |
140 ;; ;; So people who use koi8 for languages other than Russian | 148 ; ;; So people who use koi8 for languages other than Russian |
141 ;; ;; will have to forgive us. | 149 ; ;; will have to forgive us. |
142 ;; ?R "KOI8 8-bit encoding for Cyrillic (MIME: KOI8-R)" | 150 ; ?R "KOI8 8-bit encoding for Cyrillic (MIME: KOI8-R)" |
143 ;; '(ccl-decode-koi8 . ccl-encode-koi8) | 151 ; (cons ccl-decode-koi8 ccl-encode-koi8)) |
144 ;; '((safe-charsets ascii cyrillic-iso8859-5) | 152 |
145 ;; (mime-charset . koi8-r) | 153 ;(define-coding-system-alias 'koi8-r 'cyrillic-koi8) |
146 ;; (valid-codes (0 . 127) 163 179 (192 . 255)) | 154 ;(define-coding-system-alias 'koi8 'cyrillic-koi8) |
147 ;; (charset-origin-alist (cyrillic-iso8859-5 "KOI8-R" | |
148 ;; cyrillic-encode-koi8-r-char)))) | |
149 | |
150 ;; (define-coding-system-alias 'koi8-r 'cyrillic-koi8) | |
151 ;; (define-coding-system-alias 'koi8 'cyrillic-koi8) | |
152 | 155 |
153 (make-coding-system | 156 (make-coding-system |
154 'koi8-r 'ccl | 157 'koi8-r 'ccl |
155 "Coding-system used for KOI8-R." | 158 "Coding-system used for KOI8-R." |
156 `(decode ,ccl-decode-koi8 | 159 `(decode ,ccl-decode-koi8 |
157 encode ,ccl-encode-koi8 | 160 encode ,ccl-encode-koi8 |
158 mnemonic "KOI8")) | 161 mnemonic "KOI8")) |
159 | 162 |
160 ;; it is not correct, but XEmacs doesn't have `ccl' category... | 163 ;(define-coding-system-alias 'koi8-r 'koi8) |
161 (coding-system-put 'koi8-r 'category 'iso-8-1) | |
162 | 164 |
163 ;; (define-ccl-program ccl-encode-koi8-font | 165 ;; (define-ccl-program ccl-encode-koi8-font |
164 ;; `(0 | 166 ;; '(0 |
165 ;; ((r1 |= 128) | 167 ;; ((r1 -= 160) |
166 ;; (r1 = r1 ,cyrillic-koi8-r-encode-table))) | 168 ;; (r1 = r1 |
169 ;; [ 32 179 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
170 ;; 225 226 247 231 228 229 246 250 233 234 235 236 237 238 239 240 | |
171 ;; 242 243 244 245 230 232 227 254 251 253 255 249 248 252 224 241 | |
172 ;; 193 194 215 199 196 197 214 218 201 202 203 204 205 206 207 208 | |
173 ;; 210 211 212 213 198 200 195 222 219 221 223 217 216 220 192 209 | |
174 ;; 32 163 32 32 32 32 32 32 32 32 32 32 32 32 32 32]) | |
175 ;; )) | |
167 ;; "CCL program to encode Cyrillic chars to KOI font.") | 176 ;; "CCL program to encode Cyrillic chars to KOI font.") |
168 | 177 |
169 ;; (setq font-ccl-encoder-alist | 178 ;; (setq font-ccl-encoder-alist |
170 ;; (cons (cons "koi8" ccl-encode-koi8-font) font-ccl-encoder-alist)) | 179 ;; (cons (cons "koi8" ccl-encode-koi8-font) font-ccl-encoder-alist)) |
171 | 180 |
172 ;; (defvar cyrillic-koi8-r-nonascii-translation-table | |
173 ;; (make-translation-table-from-vector cyrillic-koi8-r-decode-table) | |
174 ;; "Value of `nonascii-translation-table' in Cyrillic-KOI8 language environment..") | |
175 | |
176 (set-language-info-alist | 181 (set-language-info-alist |
177 "Cyrillic-KOI8" '((charset cyrillic-iso8859-5) | 182 "Cyrillic-KOI8" '((setup-function . (setup-cyrillic-koi8-environment |
178 (coding-system koi8-r) | 183 . setup-cyrillic-environment-map)) |
179 (coding-priority koi8-r) | 184 (charset . (cyrillic-iso8859-5)) |
180 (input-method . "cyrillic-yawerty") | 185 (coding-system . (koi8-r)) |
181 (features cyril-util) | |
182 (tutorial . "TUTORIAL.ru") | 186 (tutorial . "TUTORIAL.ru") |
183 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!") | 187 (sample-text . "Russian (.LN@NcNaNaNZNXNY) N7NTN`NPNRNaNbNRNcNYNbNU!") |
184 (documentation . "Support for Cyrillic KOI8-R.")) | 188 (documentation . ("Support for Cyrillic KOI-8." |
185 '("Cyrillic")) | 189 . describe-cyrillic-environment-map)))) |
186 | 190 |
187 ;;; ALTERNATIVNYJ staff | 191 ;;; ALTERNATIVNYJ staff |
188 | 192 |
189 (eval-and-compile | |
190 | |
191 (defvar cyrillic-alternativnyj-decode-table | |
192 [ | |
193 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
194 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |
195 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | |
196 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | |
197 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | |
198 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | |
199 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | |
200 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | |
201 ?,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 | |
202 ?,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 | |
203 ?,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 | |
204 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
205 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
206 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
207 ?,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 | |
208 ?,L!(B ?,Lq(B 32 32 32 32 32 32 32 32 32 32 32 32 32 ?,Lp(B] | |
209 "Cyrillic ALTERNATIVNYJ decoding table.") | |
210 | |
211 (defvar cyrillic-alternativnyj-encode-table | |
212 (let ((table (make-vector 256 32)) | |
213 (i 0)) | |
214 (while (< i 256) | |
215 (let* ((ch (aref cyrillic-alternativnyj-decode-table i)) | |
216 (split (split-char ch))) | |
217 (if (eq (car split) 'cyrillic-iso8859-5) | |
218 (aset table (logior (nth 1 split) 128) i) | |
219 (if (/= ch 32) | |
220 (aset table ch i)))) | |
221 (setq i (1+ i))) | |
222 table) | |
223 "Cyrillic ALTERNATIVNYJ encoding table.") | |
224 | |
225 ) | |
226 | |
227 | |
228 (define-ccl-program ccl-decode-alternativnyj | 193 (define-ccl-program ccl-decode-alternativnyj |
229 `(3 | 194 '(3 |
230 ((read r0) | 195 ((read r0) |
231 (loop | 196 (loop |
232 (write-read-repeat r0 ,cyrillic-alternativnyj-decode-table)))) | 197 (write-read-repeat |
198 r0 | |
199 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
200 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |
201 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | |
202 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | |
203 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | |
204 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | |
205 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | |
206 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | |
207 ?.LN0 ?N1 ?N2 ?N3 ?N4 ?N5 ?N6 ?N7 ?N8 ?N9 ?N: ?N; ?N< ?N= ?N> ?N? | |
208 ?.LN@ ?NA ?NB ?NC ?ND ?NE ?NF ?NG ?NH ?NI ?NJ ?NK ?NL ?NM ?NN ?NO | |
209 ?.LNP ?NQ ?NR ?NS ?NT ?NU ?NV ?NW ?NX ?NY ?NZ ?N[ ?N\ ?N] ?N^ ?N_ | |
210 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
211 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
212 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
213 ?.LN` ?Na ?Nb ?Nc ?Nd ?Ne ?Nf ?Ng ?Nh ?Ni ?Nj ?Nk ?Nl ?Nm ?Nn ?No | |
214 ?.LN! ?Nq 32 32 32 32 32 32 32 32 32 32 32 32 32 ?Np])))) | |
233 "CCL program to decode Alternativnyj.") | 215 "CCL program to decode Alternativnyj.") |
234 | 216 |
235 (define-ccl-program ccl-encode-alternativnyj | 217 (define-ccl-program ccl-encode-alternativnyj |
236 `(1 | 218 `(1 |
237 ((read r0) | 219 ((read r0) |
238 (loop | 220 (loop |
239 (if (r0 != ,(charset-id 'cyrillic-iso8859-5)) | 221 (if (r0 != ,(charset-id 'cyrillic-iso8859-5)) |
240 (write-read-repeat r0) | 222 (write-read-repeat r0) |
241 ((read r0) | 223 ((read r0) |
242 (write-read-repeat r0 ,cyrillic-alternativnyj-encode-table)))))) | 224 (r0 -= 160) |
225 (write-read-repeat | |
226 r0 | |
227 [ 32 240 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
228 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | |
229 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | |
230 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | |
231 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | |
232 255 241 32 32 32 32 32 32 32 32 32 32 32 32 32 32]) | |
233 ))))) | |
243 "CCL program to encode Alternativnyj.") | 234 "CCL program to encode Alternativnyj.") |
244 | 235 |
245 ;; (make-coding-system | 236 ;; (make-coding-system |
246 ;; 'cyrillic-alternativnyj 4 ?A | 237 ;; 'alternativnyj 4 |
247 ;; "ALTERNATIVNYJ 8-bit encoding for Cyrillic" | 238 ;; ?A "Coding-system used for Alternativnyj" |
248 ;; '(ccl-decode-alternativnyj . ccl-encode-alternativnyj) | 239 ;; (cons ccl-decode-alternativnyj ccl-encode-alternativnyj)) |
249 ;; '((safe-charsets ascii cyrillic-iso8859-5) | |
250 ;; (valid-codes (0 . 175) (224 . 241) 255) | |
251 ;; (charset-origin-alist (cyrillic-iso8859-5 "ALTERNATIVNYJ" | |
252 ;; cyrillic-encode-koi8-r-char)))) | |
253 | |
254 | |
255 ;; (define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj) | |
256 | 240 |
257 (make-coding-system | 241 (make-coding-system |
258 'alternativnyj 'ccl | 242 'alternativnyj 'ccl |
259 "Coding-system used for Alternativnyj" | 243 "Coding-system used for Alternativnyj" |
260 `(decode ,ccl-decode-alternativnyj | 244 `(decode ,ccl-decode-alternativnyj |
261 encode ,ccl-encode-alternativnyj | 245 encode ,ccl-encode-alternativnyj |
262 mnemonic "Cy.Alt")) | 246 mnemonic "Cy.Alt")) |
263 | 247 |
264 ;; it is not correct, but XEmacs doesn't have `ccl' category... | |
265 (coding-system-put 'alternativnyj 'category 'iso-8-1) | |
266 | |
267 ;; (define-ccl-program ccl-encode-alternativnyj-font | 248 ;; (define-ccl-program ccl-encode-alternativnyj-font |
268 ;; '(0 | 249 ;; '(0 |
269 ;; ((r1 |= 128) | 250 ;; ((r1 -= 160) |
270 ;; (r1 = r1 ,cyrillic-alternativnyj-encode-table))) | 251 ;; (r1 = r1 |
252 ;; [ 32 240 32 32 32 32 32 32 32 32 32 32 32 32 32 32 | |
253 ;; 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | |
254 ;; 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | |
255 ;; 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | |
256 ;; 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | |
257 ;; 255 241 32 32 32 32 32 32 32 32 32 32 32 32 32 32]) | |
258 ;; )) | |
271 ;; "CCL program to encode Cyrillic chars to Alternativnyj font.") | 259 ;; "CCL program to encode Cyrillic chars to Alternativnyj font.") |
272 | 260 |
273 ;; (setq font-ccl-encoder-alist | 261 ;; (setq font-ccl-encoder-alist |
274 ;; (cons (cons "alternativnyj" ccl-encode-alternativnyj-font) | 262 ;; (cons (cons "alternativnyj" ccl-encode-alternativnyj-font) |
275 ;; font-ccl-encoder-alist)) | 263 ;; font-ccl-encoder-alist)) |
276 | 264 |
277 ;; (defvar cyrillic-alternativnyj-nonascii-translation-table | |
278 ;; (make-translation-table-from-vector cyrillic-alternativnyj-decode-table) | |
279 ;; "Value of `nonascii-translation-table' in Cyrillic-ALT language environment.") | |
280 | |
281 (set-language-info-alist | 265 (set-language-info-alist |
282 "Cyrillic-ALT" '((charset cyrillic-iso8859-5) | 266 "Cyrillic-ALT" '((setup-function . (setup-cyrillic-alternativnyj-environment |
283 (coding-system alternativnyj) | 267 . setup-cyrillic-environment-map)) |
284 (coding-priority alternativnyj) | 268 (charset . (cyrillic-iso8859-5)) |
285 (input-method . "cyrillic-yawerty") | 269 (coding-system . (alternativnyj)) |
286 (features cyril-util) | |
287 (tutorial . "TUTORIAL.ru") | 270 (tutorial . "TUTORIAL.ru") |
288 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!") | 271 (sample-text . "Russian (.LN@NcNaNaNZNXNY) N7NTN`NPNRNaNbNRNcNYNbNU!") |
289 (documentation . "Support for Cyrillic ALTERNATIVNYJ.")) | 272 (documentation . ("Support for Cyrillic ALTERNATIVNYJ." |
290 '("Cyrillic")) | 273 . describe-cyrillic-environment-map)))) |
274 | |
275 ;;; GENERAL | |
276 | |
277 (defun setup-cyrillic-environment () | |
278 "Setup multilingual environment for Cyrillic users." | |
279 (interactive) | |
280 (setq primary-language "Cyrillic") | |
281 | |
282 (setq coding-category-iso-8-1 'iso-8859-5) | |
283 | |
284 (set-coding-priority | |
285 '(coding-category-iso-7 | |
286 coding-category-iso-8-1)) | |
287 | |
288 (setq-default buffer-file-coding-system 'iso-8859-5) | |
289 (set-terminal-coding-system 'iso-8859-5) | |
290 (set-keyboard-coding-system 'iso-8859-5) | |
291 | |
292 (setq default-input-method '("Cyrillic" . "quail-yawerty")) | |
293 ) | |
294 | |
295 (defun describe-cyrillic-support () | |
296 "Describe how Emacs support Cyrillic." | |
297 (interactive) | |
298 (describe-language-support-internal "Cyrillic")) | |
299 | |
300 (set-language-info-alist | |
301 "Cyrillic" '((setup-function . setup-cyrillic-environment) | |
302 (describe-function . describe-cyrillic-support) | |
303 (charset . (cyrillic-iso8859-5)) | |
304 (tutorial . "TUTORIAL.ru") | |
305 (coding-system . (iso-8859-5 koi8-r alternativnyj)) | |
306 (sample-text . "Russian (.LN@NcNaNaNZNXNY) N7NTN`NPNRNaNbNRNcNYNbNU!") | |
307 (documentation . nil))) | |
291 | 308 |
292 ;;; cyrillic.el ends here | 309 ;;; cyrillic.el ends here |