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