aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/language/cyrillic.el
diff options
context:
space:
mode:
authorKenichi Handa <[email protected]>2000-06-06 02:10:04 +0000
committerKenichi Handa <[email protected]>2000-06-06 02:10:04 +0000
commit1f487ef8ac423dd78048210836ee37a844d05218 (patch)
treeb1702ea41ef4ff609eb4141c8e9ce248a230dc91 /lisp/language/cyrillic.el
parent0d833551c738ba7ba90243d400264e9cb9fddd1e (diff)
Remove eval-when-compile.
(cyrillic-koi8-r-nonascii-translation-table): Define it as a translation table made from cyrillic-koi8-r-decode-table. (cyrillic-koi8-r-encode-table): Define it as a translation table made from the reverse map of above. (ccl-decode-koi8): Use translate-character. (ccl-encode-koi8, ccl-encode-koi8-font): Likewize (cyrillic-alternativnyj-nonascii-translation-table): Define it as a translation table made from cyrillic-alternativnyj-decode-table. (cyrillic-alternativnyj-encode-table): Define it as a translation table made from the reverse map of above. (ccl-decode-alternativnyj): Use translate-character. (ccl-encode-alternativnyj, ccl-encode-alternativnyj-font): Likewize
Diffstat (limited to 'lisp/language/cyrillic.el')
-rw-r--r--lisp/language/cyrillic.el112
1 files changed, 45 insertions, 67 deletions
diff --git a/lisp/language/cyrillic.el b/lisp/language/cyrillic.el
index a4cb9a726e..e81698c355 100644
--- a/lisp/language/cyrillic.el
+++ b/lisp/language/cyrillic.el
@@ -57,8 +57,6 @@
;; KOI-8 staff
-(eval-and-compile
-
(defvar cyrillic-koi8-r-decode-table
[
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
@@ -79,37 +77,31 @@
?,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 ]
"Cyrillic KOI8-R decoding table.")
-(defvar cyrillic-koi8-r-encode-table
- (let ((table (make-vector 256 32))
- (i 0))
- (while (< i 256)
- (let* ((ch (aref cyrillic-koi8-r-decode-table i))
- (split (split-char ch)))
- (if (eq (car split) 'cyrillic-iso8859-5)
- (aset table (logior (nth 1 split) 128) i)
- (if (/= ch 32)
- (aset table ch i))))
- (setq i (1+ i)))
- table)
- "Cyrillic KOI8-R encoding table.")
-
-)
+(let ((table (make-translation-table-from-vector
+ cyrillic-koi8-r-decode-table)))
+ (define-translation-table 'cyrillic-koi8-r-nonascii-translation-table table)
+ (define-translation-table 'cyrillic-koi8-r-encode-table
+ (char-table-extra-slot table 0)))
(define-ccl-program ccl-decode-koi8
`(3
- ((read r0)
- (loop
- (write-read-repeat r0 ,cyrillic-koi8-r-decode-table))))
+ ((loop
+ (r0 = 0)
+ (read r1)
+ (if (r1 < 128)
+ (write-repeat r1)
+ ((translate-character cyrillic-koi8-r-nonascii-translation-table r0 r1)
+ (write-multibyte-character r0 r1)
+ (repeat))))))
"CCL program to decode KOI8.")
(define-ccl-program ccl-encode-koi8
`(1
- ((read r0)
- (loop
- (if (r0 != ,(charset-id 'cyrillic-iso8859-5))
- (write-read-repeat r0)
- ((read r0)
- (write-read-repeat r0 , cyrillic-koi8-r-encode-table))))))
+ ((loop
+ (read-multibyte-character r0 r1)
+ (if (r0 == ,(charset-id 'cyrillic-iso8859-5))
+ (translate-character cyrillic-koi8-r-encode-table r0 r1))
+ (write-repeat r1))))
"CCL program to encode KOI8.")
(make-coding-system
@@ -131,21 +123,17 @@
(define-ccl-program ccl-encode-koi8-font
`(0
- ((r1 |= 128)
- (r1 = r1 ,cyrillic-koi8-r-encode-table)))
+ ((translate-character cyrillic-koi8-r-encode-table r0 r1)))
"CCL program to encode Cyrillic chars to KOI font.")
(setq font-ccl-encoder-alist
- (cons (cons "koi8" ccl-encode-koi8-font) font-ccl-encoder-alist))
-
-(defvar cyrillic-koi8-r-nonascii-translation-table
- (make-translation-table-from-vector cyrillic-koi8-r-decode-table)
- "Value of `nonascii-translation-table' in Cyrillic-KOI8 language environment..")
+ (cons '("koi8" . ccl-encode-koi8-font) font-ccl-encoder-alist))
(set-language-info-alist
"Cyrillic-KOI8" `((charset cyrillic-iso8859-5)
(nonascii-translation
- . ,cyrillic-koi8-r-nonascii-translation-table)
+ . ,(get 'cyrillic-koi8-r-nonascii-translation-table
+ 'translation-table))
(coding-system cyrillic-koi8)
(coding-priority cyrillic-koi8)
(input-method . "cyrillic-jcuken")
@@ -157,8 +145,6 @@
;;; ALTERNATIVNYJ staff
-(eval-and-compile
-
(defvar cyrillic-alternativnyj-decode-table
[
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
@@ -179,38 +165,34 @@
?,L!(B ?,Lq(B 242 243 244 245 246 247 248 249 250 251 252 253 254 ?,Lp(B]
"Cyrillic ALTERNATIVNYJ decoding table.")
-(defvar cyrillic-alternativnyj-encode-table
- (let ((table (make-vector 256 32))
- (i 0))
- (while (< i 256)
- (let* ((ch (aref cyrillic-alternativnyj-decode-table i))
- (split (split-char ch)))
- (if (eq (car split) 'cyrillic-iso8859-5)
- (aset table (logior (nth 1 split) 128) i)
- (if (/= ch 32)
- (aset table ch i))))
- (setq i (1+ i)))
+(let ((table (make-translation-table-from-vector
+ cyrillic-alternativnyj-decode-table)))
+ (define-translation-table 'cyrillic-alternativnyj-nonascii-translation-table
table)
- "Cyrillic ALTERNATIVNYJ encoding table.")
-
-)
+ (define-translation-table 'cyrillic-alternativnyj-encode-table
+ (char-table-extra-slot table 0)))
(define-ccl-program ccl-decode-alternativnyj
`(3
- ((read r0)
- (loop
- (write-read-repeat r0 ,cyrillic-alternativnyj-decode-table))))
+ ((loop
+ (r0 = 0)
+ (read r1)
+ (if (r1 < 128)
+ (write-repeat r1)
+ ((translate-character cyrillic-alternativnyj-nonascii-translation-table
+ r0 r1)
+ (write-multibyte-character r0 r1)
+ (repeat))))))
"CCL program to decode Alternativnyj.")
(define-ccl-program ccl-encode-alternativnyj
`(1
- ((read r0)
- (loop
- (if (r0 != ,(charset-id 'cyrillic-iso8859-5))
- (write-read-repeat r0)
- ((read r0)
- (write-read-repeat r0 ,cyrillic-alternativnyj-encode-table))))))
+ ((loop
+ (read-multibyte-character r0 r1)
+ (if (r0 == ,(charset-id 'cyrillic-iso8859-5))
+ (translate-character cyrillic-alternativnyj-encode-table r0 r1))
+ (write-repeat r1))))
"CCL program to encode Alternativnyj.")
(make-coding-system
@@ -227,22 +209,18 @@
(define-ccl-program ccl-encode-alternativnyj-font
'(0
- ((r1 |= 128)
- (r1 = r1 ,cyrillic-alternativnyj-encode-table)))
+ ((translate-character cyrillic-alternativnyj-encode-table r0 r1)))
"CCL program to encode Cyrillic chars to Alternativnyj font.")
(setq font-ccl-encoder-alist
- (cons (cons "alternativnyj" ccl-encode-alternativnyj-font)
+ (cons '("alternativnyj" . ccl-encode-alternativnyj-font)
font-ccl-encoder-alist))
-(defvar cyrillic-alternativnyj-nonascii-translation-table
- (make-translation-table-from-vector cyrillic-alternativnyj-decode-table)
- "Value of `nonascii-translation-table' in Cyrillic-ALT language environment.")
-
(set-language-info-alist
"Cyrillic-ALT" `((charset cyrillic-iso8859-5)
(nonascii-translation
- . ,cyrillic-alternativnyj-nonascii-translation-table)
+ . ,(get 'cyrillic-alternativnyj-nonascii-translation-table
+ 'translation-table))
(coding-system cyrillic-alternativnyj)
(coding-priority cyrillic-alternativnyj)
(input-method . "cyrillic-jcuken")