emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/language/cyrillic.el


From: Dave Love
Subject: [Emacs-diffs] Changes to emacs/lisp/language/cyrillic.el
Date: Wed, 17 Jul 2002 14:39:17 -0400

Index: emacs/lisp/language/cyrillic.el
diff -c emacs/lisp/language/cyrillic.el:1.31 
emacs/lisp/language/cyrillic.el:1.32
*** emacs/lisp/language/cyrillic.el:1.31        Wed Jun  5 01:07:58 2002
--- emacs/lisp/language/cyrillic.el     Wed Jul 17 14:39:16 2002
***************
*** 2,9 ****
  
  ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
  ;; Licensed to the Free Software Foundation.
  
! ;; Keywords: multilingual, Cyrillic
  
  ;; This file is part of GNU Emacs.
  
--- 2,11 ----
  
  ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
  ;; Licensed to the Free Software Foundation.
+ ;; Copyright (C) 2001, 2002  Free Software Foundation, Inc.
  
! ;; Author: Kenichi Handa <address@hidden>
! ;; Keywords: multilingual, Cyrillic, i18n
  
  ;; This file is part of GNU Emacs.
  
***************
*** 24,38 ****
  
  ;;; Commentary:
  
! ;; The character set ISO8859-5 is supported.  See
! ;; http://www.ecma.ch/ecma1/STAND/ECMA-113.HTM.  KOI-8 and
! ;; ALTERNATIVNYJ are converted to ISO8859-5 internally.
  
  ;;; Code:
  
  ;; Cyrillic (general)
  
! ;; ISO-8859-5 staff
  
  (make-coding-system
   'cyrillic-iso-8bit 2 ?5
--- 26,58 ----
  
  ;;; Commentary:
  
! ;; The character set ISO8859-5 is supported.  KOI-8 and ALTERNATIVNYJ
! ;; are converted to Unicode internally.  See
! ;; <URL:http://www.ecma.ch/ecma1/STAND/ECMA-113.HTM>.  For more info
! ;; on Cyrillic charsets, see
! ;; <URL:http://czyborra.com/charsets/cyrillic.html>.  The KOI and
! ;; Alternativnyj coding systems should live in code-pages.el, but
! ;; they've always been preloaded and the coding system autoload
! ;; mechanism didn't get accepted, so they have to stay here and
! ;; duplicate code-pages stuff.
! 
! ;; Note that 8859-5 maps directly onto the Unicode Cyrillic block,
! ;; apart from codepoints 160 (NBSP, c.f. U+0400), 173 (soft hyphen,
! ;; c.f. U+04OD) and 253 (section sign, c.f U+045D).  The KOI-8 and
! ;; Alternativnyj coding systems encode both 8859-5 and Unicode.
! ;; ucs-tables.el provides unification for cyrillic-iso-8bit.
! 
! ;; Customizing `utf-8-fragment-on-decoding' allows decoding characters
! ;; from KOI and Alternativnyj into 8859-5 where that's possible.
! ;; cyrillic-iso8859-5 characters take half as much space in the buffer
! ;; as the mule-unicode-0100-24ff equivalents, though that's probably
! ;; not normally a big deal.
  
  ;;; Code:
  
  ;; Cyrillic (general)
  
! ;; ISO-8859-5 stuff
  
  (make-coding-system
   'cyrillic-iso-8bit 2 ?5
***************
*** 48,54 ****
   "Cyrillic-ISO" '((charset cyrillic-iso8859-5)
                  (coding-system cyrillic-iso-8bit)
                  (coding-priority cyrillic-iso-8bit)
!                 (input-method . "cyrillic-yawerty")
                  (nonascii-translation . cyrillic-iso8859-5)
                  (unibyte-display . cyrillic-iso-8bit)
                  (features cyril-util)
--- 68,74 ----
   "Cyrillic-ISO" '((charset cyrillic-iso8859-5)
                  (coding-system cyrillic-iso-8bit)
                  (coding-priority cyrillic-iso-8bit)
!                 (input-method . "cyrillic-yawerty") ; fixme
                  (nonascii-translation . cyrillic-iso8859-5)
                  (unibyte-display . cyrillic-iso-8bit)
                  (features cyril-util)
***************
*** 56,63 ****
                  (documentation . "Support for Cyrillic ISO-8859-5."))
   '("Cyrillic"))
  
! ;; KOI-8 staff
  
  (defvar cyrillic-koi8-r-decode-table
    [
     0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
--- 76,86 ----
                  (documentation . "Support for Cyrillic ISO-8859-5."))
   '("Cyrillic"))
  
! ;; KOI-8R stuff
  
+ ;; The mule-unicode portion of this is from
+ ;; http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT,
+ ;; which references RFC 1489.
  (defvar cyrillic-koi8-r-decode-table
    [
     0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
***************
*** 68,81 ****
     80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
     96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
     112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
!    128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
!    144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
!    160 161 162 ?,Lq(B  164 165 166 167 168 169 170 171 172 173 174 175
!    176 177 178 ?,L!(B  180 181 182 183 184 185 186 187 188 189 190 191
!    ?,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 
!    ?,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 
!    ?,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 
!    ?,L?(B  ?,LO(B  ?,address@hidden(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.")
  
  (let ((table (make-translation-table-from-vector
--- 91,115 ----
     80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
     96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
     112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
!    ;; 8859-5 plus Unicode
!    ?$,2  (B ?$,2 "(B ?$,2 ,(B ?$,2 0(B ?$,2 4(B ?$,2 8(B ?$,2 
<(B ?$,2 D(B ?$,2 L(B ?$,2 T(B ?$,2 \(B ?$,address@hidden(B 
?$,2!D(B ?$,2!H(B ?$,2!L(B ?$,2!P(B
!    ?$,2!Q(B ?$,2!R(B ?$,2!S(B ?$,1{ (B ?$,2!`(B ?$,1s"(B 
?$,1x:(B ?$,1xh(B ?$,1y$(B ?$,1y%(B ?,L (B ?$,1{!(B ?,A0(B 
?,A2(B ?,A7(B ?,Aw(B
!    ?$,2 p(B ?$,2 q(B ?$,2 r(B ?,Lq(B ?$,2 s(B ?$,2 t(B ?$,2 u(B 
?$,2 v(B ?$,2 w(B ?$,2 x(B ?$,2 y(B ?$,2 z(B ?$,2 {(B ?$,2 |(B 
?$,2 }(B ?$,2 ~(B
!    ?$,2 (B ?$,2! (B ?$,2!!(B ?,L!(B ?$,2!"(B ?$,2!#(B ?$,2!$(B 
?$,2!%(B ?$,2!&(B ?$,2!'(B ?$,2!((B ?$,2!)(B ?$,2!*(B ?$,2!+(B 
?$,2!,(B ?,A)(B
!    ?,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
!    ?,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
!    ?,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
!    ?,L?(B  ?,LO(B  ?,address@hidden(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
!    ;; All Unicode:
! ;;    ?$,2  (B ?$,2 "(B ?$,2 ,(B ?$,2 0(B ?$,2 4(B ?$,2 8(B ?$,2 
<(B ?$,2 D(B ?$,2 L(B ?$,2 T(B ?$,2 \(B ?$,address@hidden(B 
?$,2!D(B ?$,2!H(B ?$,2!L(B ?$,2!P(B
! ;;    ?$,2!Q(B ?$,2!R(B ?$,2!S(B ?$,1{ (B ?$,2!`(B ?$,1s"(B 
?$,1x:(B ?$,1xh(B ?$,1y$(B ?$,1y%(B ?,A (B ?$,1{!(B ?,A0(B 
?,A2(B ?,A7(B ?,Aw(B
! ;;    ?$,2 p(B ?$,2 q(B ?$,2 r(B ?$,1(q(B ?$,2 s(B ?$,2 t(B ?$,2 
u(B ?$,2 v(B ?$,2 w(B ?$,2 x(B ?$,2 y(B ?$,2 z(B ?$,2 {(B ?$,2 
|(B ?$,2 }(B ?$,2 ~(B
! ;;    ?$,2 (B ?$,2! (B ?$,2!!(B ?$,1(!(B ?$,2!"(B ?$,2!#(B 
?$,2!$(B ?$,2!%(B ?$,2!&(B ?$,2!'(B ?$,2!((B ?$,2!)(B ?$,2!*(B 
?$,2!+(B ?$,2!,(B ?,A)(B
! ;;    ?$,1(n(B ?$,1(P(B ?$,1(Q(B ?$,1(f(B ?$,1(T(B ?$,1(U(B 
?$,1(d(B ?$,1(S(B ?$,1(e(B ?$,1(X(B ?$,1(Y(B ?$,1(Z(B ?$,1([(B 
?$,1(\(B ?$,1(](B ?$,1(^(B
! ;;    ?$,1(_(B ?$,1(o(B ?$,1(`(B ?$,1(a(B ?$,1(b(B ?$,1(c(B 
?$,1(V(B ?$,1(R(B ?$,1(l(B ?$,1(k(B ?$,1(W(B ?$,1(h(B ?$,1(m(B 
?$,1(i(B ?$,1(g(B ?$,1(j(B
! ;;    ?$,1(N(B ?$,1(0(B ?$,1(1(B ?$,1(F(B ?$,1(4(B ?$,1(5(B 
?$,1(D(B ?$,1(3(B ?$,1(E(B ?$,1(8(B ?$,1(9(B ?$,1(:(B ?$,1(;(B 
?$,1(<(B ?$,1(=(B ?$,1(>(B
! ;;    ?$,1(?(B ?$,1(O(B ?$,1(@(B ?$,1(A(B ?$,1(B(B ?$,1(C(B 
?$,1(6(B ?$,1(2(B ?$,1(L(B ?$,1(K(B ?$,1(7(B ?$,1(H(B ?$,1(M(B 
?$,1(I(B ?$,1(G(B ?$,1(J(B
!    ]
    "Cyrillic KOI8-R decoding table.")
  
  (let ((table (make-translation-table-from-vector
***************
*** 84,140 ****
    (define-translation-table 'cyrillic-koi8-r-encode-table
      (char-table-extra-slot table 0)))
  
  (define-ccl-program ccl-decode-koi8
!   `(3
      ((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
      ((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
   'cyrillic-koi8 4
   ;; We used to use ?K.  It is true that ?K is more strictly correct,
   ;; but it is also used for Korean.
   ;; So people who use koi8 for languages other than Russian
   ;; will have to forgive us.
!  ?R
!  "KOI8 8-bit encoding for Cyrillic (MIME: KOI8-R)."
   '(ccl-decode-koi8 . ccl-encode-koi8)
!  `((safe-chars . ,(let ((table (make-char-table 'safe-chars))
!                       (i 0))
!                   (while (< i 256)
!                     (aset table (aref cyrillic-koi8-r-decode-table i) t)
!                     (setq i (1+ i)))
!                   table))
     (mime-charset . koi8-r)
!    (valid-codes (0 . 127) 163 179 (192 . 255))
!    (charset-origin-alist (cyrillic-iso8859-5 "KOI8-R"
!                                            cyrillic-encode-koi8-r-char))))
  
  (define-coding-system-alias 'koi8-r 'cyrillic-koi8)
  (define-coding-system-alias 'koi8 'cyrillic-koi8)
  
  (define-ccl-program ccl-encode-koi8-font
    `(0
!     ((translate-character cyrillic-koi8-r-encode-table r0 r1)))
    "CCL program to encode Cyrillic chars to KOI font.")
  
! (setq font-ccl-encoder-alist
!       (cons '("koi8" . ccl-encode-koi8-font) font-ccl-encoder-alist))
  
  (set-language-info-alist
   "Cyrillic-KOI8" `((charset cyrillic-iso8859-5)
--- 118,208 ----
    (define-translation-table 'cyrillic-koi8-r-encode-table
      (char-table-extra-slot table 0)))
  
+ ;; No point in keeping it around.  (It can't be let-bound, since it's
+ ;; needed for macro expansion.)
+ (makunbound 'cyrillic-koi8-r-decode-table)
+ 
  (define-ccl-program ccl-decode-koi8
!   `(4
      ((loop
        (r0 = 0)
        (read r1)
        (if (r1 < 128)
          (write-repeat r1)
        ((translate-character cyrillic-koi8-r-nonascii-translation-table r0 r1)
+        (translate-character utf-8-translation-table-for-decode r0 r1)
         (write-multibyte-character r0 r1)
         (repeat))))))
!   "CCL program to decode KOI8-R.")
  
  (define-ccl-program ccl-encode-koi8
    `(1
      ((loop
        (read-multibyte-character r0 r1)
!       (translate-character cyrillic-koi8-r-encode-table r0 r1)
        (write-repeat r1))))
!   "CCL program to encode KOI8-R.")
! 
! (defun cyrillic-unify-encoding (table)
!   "Set up equivalent characters in the encoding TABLE.
! This works wheher or not the table is is Unicode-based or
! 8859-5-based.  (Only appropriate for Cyrillic.)"
!   (let ((table (get table 'translation-table)))
!     (dotimes (i 96)
!       (let* ((c (make-char 'cyrillic-iso8859-5 (+ i 32)))
!            (u                         ; equivalent Unicode char
!             (cond ((eq c ?,L (B) ?,A (B)
!                   ((eq c ?,L-(B) ?,A-(B)
!                   ((eq c ?,L}(B) ?,A'(B)
!                   (t (decode-char 'ucs (+ #x400 i)))))
!            (ec (aref table c))        ; encoding of 8859-5
!            (uc (aref table u)))       ; encoding of Unicode
!       (unless (memq c '(?,L (B ?,L-(B ?,L}(B))  ; 8859-5 exceptions
!         (unless uc
!           (aset table u ec))
!         (unless ec
!           (aset table c uc)))))))
! 
! (cyrillic-unify-encoding 'cyrillic-koi8-r-encode-table)
! 
  (make-coding-system
   'cyrillic-koi8 4
   ;; We used to use ?K.  It is true that ?K is more strictly correct,
   ;; but it is also used for Korean.
   ;; So people who use koi8 for languages other than Russian
   ;; will have to forgive us.
!  ?R "KOI8-R 8-bit encoding for Cyrillic (MIME: KOI8-R)."
   '(ccl-decode-koi8 . ccl-encode-koi8)
!  `((safe-chars . cyrillic-koi8-r-encode-table)
     (mime-charset . koi8-r)
!    (valid-codes (0 . 255))))
  
  (define-coding-system-alias 'koi8-r 'cyrillic-koi8)
  (define-coding-system-alias 'koi8 'cyrillic-koi8)
+ (define-coding-system-alias 'cp878 'cyrillic-koi8)
  
+ ;; Allow displaying some of KOI & al with an 8859-5-encoded font.  We
+ ;; won't bother about the exceptions when encoding the font, since
+ ;; NBSP will fall through below and work anyhow, and we'll have
+ ;; avoided setting the fontset for the other two to 8859-5 -- they're
+ ;; not in KOI and Alternativnyj anyhow.
+ (define-ccl-program ccl-encode-8859-5-font
+   `(0
+     ((if (r0 == ,(charset-id 'cyrillic-iso8859-5))
+        (r1 += 128)
+        (if (r0 == ,(charset-id 'mule-unicode-0100-24ff))
+          (r1 = (r2 + 128))))))
+   "Encode ISO 8859-5 and Cyrillic Unicode chars to 8859-5 font.")
+ 
+ (add-to-list 'font-ccl-encoder-alist '("iso8859-5" . ccl-encode-8859-5-font))
+ 
+ ;; The table is set up later to encode both Unicode and 8859-5.
  (define-ccl-program ccl-encode-koi8-font
    `(0
!     (translate-character cyrillic-koi8-r-encode-table r0 r1))
    "CCL program to encode Cyrillic chars to KOI font.")
  
! (add-to-list 'font-ccl-encoder-alist '("koi8" . ccl-encode-koi8-font))
  
  (set-language-info-alist
   "Cyrillic-KOI8" `((charset cyrillic-iso8859-5)
***************
*** 142,148 ****
                    . ,(get 'cyrillic-koi8-r-nonascii-translation-table
                            'translation-table))
                   (coding-system cyrillic-koi8)
!                  (coding-priority cyrillic-koi8)
                   (input-method . "cyrillic-jcuken")
                   (features cyril-util)
                   (unibyte-display . cyrillic-koi8)
--- 210,216 ----
                    . ,(get 'cyrillic-koi8-r-nonascii-translation-table
                            'translation-table))
                   (coding-system cyrillic-koi8)
!                  (coding-priority cyrillic-koi8 cyrillic-iso-8bit)
                   (input-method . "cyrillic-jcuken")
                   (features cyril-util)
                   (unibyte-display . cyrillic-koi8)
***************
*** 150,156 ****
                   (documentation . "Support for Cyrillic KOI8-R."))
   '("Cyrillic"))
  
! ;;; ALTERNATIVNYJ staff
  
  (defvar cyrillic-alternativnyj-decode-table
    [
--- 218,314 ----
                   (documentation . "Support for Cyrillic KOI8-R."))
   '("Cyrillic"))
  
! 
! (defvar cyrillic-koi8-u-decode-table
!   [
!    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
!    16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
!    32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
!    48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
!    64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
!    80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
!    96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
!    112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
!    ;; All Unicode:
! ;;    ?$,2  (B ?$,2 "(B ?$,2 ,(B ?$,2 0(B ?$,2 4(B ?$,2 8(B ?$,2 
<(B ?$,2 D(B ?$,2 L(B ?$,2 T(B ?$,2 \(B ?$,address@hidden(B 
?$,2!D(B ?$,2!H(B ?$,2!L(B ?$,2!P(B
! ;;    ?$,2!Q(B ?$,2!R(B ?$,2!S(B ?$,1{ (B ?$,2!`(B ?$,1x9(B 
?$,1x:(B ?$,1xh(B ?$,1y$(B ?$,1y%(B ?,L (B ?$,1{!(B ?,A0(B 
?,A2(B ?,A7(B ?,Aw(B
! ;;    ?$,2 p(B ?$,2 q(B ?$,2 r(B ?$,1(q(B ?$,1(t(B ?$,2 t(B 
?$,1(v(B ?$,1(w(B ?$,2 w(B ?$,2 x(B ?$,2 y(B ?$,2 z(B ?$,2 {(B 
?$,1)Q(B ?$,2 }(B ?$,2 ~(B
! ;;    ?$,2 (B ?$,2! (B ?$,2!!(B ?$,1(!(B ?$,1($(B ?$,2!#(B 
?$,1(&(B ?$,1('(B ?$,2!&(B ?$,2!'(B ?$,2!((B ?$,2!)(B ?$,2!*(B 
?$,1)P(B ?$,2!,(B ?,A)(B
! ;;    ?$,1(n(B ?$,1(P(B ?$,1(Q(B ?$,1(f(B ?$,1(T(B ?$,1(U(B 
?$,1(d(B ?$,1(S(B ?$,1(e(B ?$,1(X(B ?$,1(Y(B ?$,1(Z(B ?$,1([(B 
?$,1(\(B ?$,1(](B ?$,1(^(B
! ;;    ?$,1(_(B ?$,1(o(B ?$,1(`(B ?$,1(a(B ?$,1(b(B ?$,1(c(B 
?$,1(V(B ?$,1(R(B ?$,1(l(B ?$,1(k(B ?$,1(W(B ?$,1(h(B ?$,1(m(B 
?$,1(i(B ?$,1(g(B ?$,1(j(B
! ;;    ?$,1(N(B ?$,1(0(B ?$,1(1(B ?$,1(F(B ?$,1(4(B ?$,1(5(B 
?$,1(D(B ?$,1(3(B ?$,1(E(B ?$,1(8(B ?$,1(9(B ?$,1(:(B ?$,1(;(B 
?$,1(<(B ?$,1(=(B ?$,1(>(B
! ;;    ?$,1(?(B ?$,1(O(B ?$,1(@(B ?$,1(A(B ?$,1(B(B ?$,1(C(B 
?$,1(6(B ?$,1(2(B ?$,1(L(B ?$,1(K(B ?$,1(7(B ?$,1(H(B ?$,1(M(B 
?$,1(I(B ?$,1(G(B ?$,1(J(B
! ;; 8859-5 plus Unicode:
!    ?$,2  (B ?$,2 "(B ?$,2 ,(B ?$,2 0(B ?$,2 4(B ?$,2 8(B ?$,2 
<(B ?$,2 D(B ?$,2 L(B ?$,2 T(B ?$,2 \(B ?$,address@hidden(B 
?$,2!D(B ?$,2!H(B ?$,2!L(B ?$,2!P(B
!    ?$,2!Q(B ?$,2!R(B ?$,2!S(B ?$,1{ (B ?$,2!`(B ?$,1x9(B 
?$,1x:(B ?$,1xh(B ?$,1y$(B ?$,1y%(B ?,L (B ?$,1{!(B ?,A0(B 
?,A2(B ?,A7(B ?,Aw(B
!    ?$,2 p(B ?$,2 q(B ?$,2 r(B ?,Lq(B ?,Lt(B ?$,2 t(B ?,Lv(B 
?,Lw(B ?$,2 w(B ?$,2 x(B ?$,2 y(B ?$,2 z(B ?$,2 {(B ?$,1)Q(B 
?$,2 }(B ?$,2 ~(B
!    ?$,2 (B ?$,2! (B ?$,2!!(B ?,L!(B ?,L$(B ?$,2!#(B ?,L&(B 
?,L'(B ?$,2!&(B ?$,2!'(B ?$,2!((B ?$,2!)(B ?$,2!*(B ?$,1)P(B 
?$,2!,(B ?,A)(B
!    ?,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
!    ?,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
!    ?,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
!    ?,L?(B ?,LO(B ?,address@hidden(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-U decoding table.")
! 
! (let ((table (make-translation-table-from-vector
!             cyrillic-koi8-u-decode-table)))
!   (define-translation-table 'cyrillic-koi8-u-nonascii-translation-table table)
!   (define-translation-table 'cyrillic-koi8-u-encode-table
!     (char-table-extra-slot table 0)))
! 
! (makunbound 'cyrillic-koi8-u-decode-table)
! 
! (define-ccl-program ccl-decode-koi8-u
!   `(4
!     ((loop
!       (r0 = 0)
!       (read r1)
!       (if (r1 < 128)
!         (write-repeat r1)
!       ((translate-character cyrillic-koi8-u-nonascii-translation-table r0 r1)
!        (translate-character utf-8-translation-table-for-decode r0 r1)
!        (write-multibyte-character r0 r1)
!        (repeat))))))
!   "CCL program to decode KOI8-U.")
! 
! (define-ccl-program ccl-encode-koi8-u
!   `(1
!     ((loop
!       (read-multibyte-character r0 r1)
!       (translate-character cyrillic-koi8-u-encode-table r0 r1)
!       (write-repeat r1))))
!   "CCL program to encode KOI8-U.")
! 
! (cyrillic-unify-encoding 'cyrillic-koi8-u-encode-table)
! 
! (make-coding-system
!  'koi8-u 4
!  ?U "KOI8-U 8-bit encoding for Cyrillic (MIME: KOI8-U)"
!  '(ccl-decode-koi8-u . ccl-encode-koi8-u)
!  `((safe-chars . cyrillic-koi8-u-encode-table)
!    (mime-charset . koi8-u)
!    (valid-codes (0 . 255))))
! 
! (define-ccl-program ccl-encode-koi8-u-font
!   `(0
!     (translate-character cyrillic-koi8-u-encode-table r0 r1))
!   "CCL program to encode Cyrillic chars to KOI-U font.")
! 
! (add-to-list 'font-ccl-encoder-alist '("koi8-u" . ccl-encode-koi8-u-font))
! 
! (set-language-info-alist
!  "Ukrainian" `((coding-system koi8-u)
!             (coding-priority koi8-u)
!              (nonascii-translation
!               . ,(get 'cyrillic-koi8-r-nonascii-translation-table
!                       'translation-table))
!              (input-method . "ukrainian-computer")
!             (features code-pages)
!             (documentation
!              . "Support for Ukrainian with koi8-u character set."))
!  '("Cyrillic"))
! 
! ;;; ALTERNATIVNYJ stuff
  
  (defvar cyrillic-alternativnyj-decode-table
    [
***************
*** 162,173 ****
     80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95
     96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111
     112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
     ?,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
     ?,address@hidden(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
     ?,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
!    176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
!    192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
!    208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
     ?,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
     ?,L!(B  ?,Lq(B  ?,L$(B  ?,Lt(B  ?,L'(B  ?,Lw(B  ?,L.(B  
?,L~(B  248 249 250 251 ?,Lp(B  253 254 ?,L (B]
    "Cyrillic ALTERNATIVNYJ decoding table.")
--- 320,340 ----
     80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95
     96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111
     112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
+ ;;    ?$,1(0(B  ?$,1(1(B  ?$,1(2(B  ?$,1(3(B  ?$,1(4(B  ?$,1(5(B  
?$,1(6(B  ?$,1(7(B  ?$,1(8(B  ?$,1(9(B  ?$,1(:(B  ?$,1(;(B  
?$,1(<(B  ?$,1(=(B  ?$,1(>(B  ?$,1(?(B
+ ;;    ?$,1(@(B  ?$,1(A(B  ?$,1(B(B  ?$,1(C(B  ?$,1(D(B  ?$,1(E(B  
?$,1(F(B  ?$,1(G(B  ?$,1(H(B  ?$,1(I(B  ?$,1(J(B  ?$,1(K(B  
?$,1(L(B  ?$,1(M(B  ?$,1(N(B  ?$,1(O(B
+ ;;    ?$,1(P(B  ?$,1(Q(B  ?$,1(R(B  ?$,1(S(B  ?$,1(T(B  ?$,1(U(B  
?$,1(V(B  ?$,1(W(B  ?$,1(X(B  ?$,1(Y(B  ?$,1(Z(B  ?$,1([(B  
?$,1(\(B  ?$,1(](B  ?$,1(^(B  ?$,1(_(B
+ ;;    ?$,2!Q(B  ?$,2!R(B  ?$,2!S(B  ?$,2 "(B  ?$,2 D(B  ?$,2!!(B  
?$,2!"(B  ?$,2 v(B  ?$,2 u(B  ?$,2!#(B  ?$,2 q(B  ?$,2 w(B  ?$,2 
}(B  ?$,2 |(B  ?$,2 {(B  ?$,2 0(B
+ ;;    ?$,2 4(B  ?$,2 T(B  ?$,2 L(B  ?$,2 <(B  ?$,2  (B  ?$,2 \(B  
?$,2 ~(B  ?$,2 (B  ?$,2 z(B  ?$,2 t(B  ?$,2!)(B  ?$,2!&(B  ?$,2! 
(B  ?$,2 p(B  ?$,2!,(B  ?$,2!'(B
+ ;;    ?$,2!((B  ?$,2!$(B  ?$,2!%(B  ?$,2 y(B  ?$,2 x(B  ?$,2 r(B  
?$,2 s(B  ?$,2!+(B  ?$,2!*(B  ?$,2 8(B  ?$,2 ,(B  ?$,2!H(B  
?$,2!D(B  ?$,2!L(B  ?$,2!P(B  ?$,address@hidden(B
+ ;;    ?$,1(`(B  ?$,1(a(B  ?$,1(b(B  ?$,1(c(B  ?$,1(d(B  ?$,1(e(B  
?$,1(f(B  ?$,1(g(B  ?$,1(h(B  ?$,1(i(B  ?$,1(j(B  ?$,1(k(B  
?$,1(l(B  ?$,1(m(B  ?$,1(n(B  ?$,1(o(B
+ ;;    ?$,1(!(B  ?$,1(q(B  ?$,1($(B  ?$,1(t(B  ?$,1('(B  ?$,1(w(B  
?$,1(.(B  ?$,1(~(B  ?,A0(B  ?$,1s"(B  ?,A7(B  ?$,1x:(B  ?$,1uV(B  
?,A$(B  ?$,2!`(B  ?,A (B ;
+ ;; 8859+Unicode
     ?,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
     ?,address@hidden(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
     ?,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
!    ?$,2!Q(B  ?$,2!R(B  ?$,2!S(B  ?$,2 "(B  ?$,2 D(B  ?$,2!!(B  
?$,2!"(B  ?$,2 v(B  ?$,2 u(B  ?$,2!#(B  ?$,2 q(B  ?$,2 w(B  ?$,2 
}(B  ?$,2 |(B  ?$,2 {(B  ?$,2 0(B
!    ?$,2 4(B  ?$,2 T(B  ?$,2 L(B  ?$,2 <(B  ?$,2  (B  ?$,2 \(B  
?$,2 ~(B  ?$,2 (B  ?$,2 z(B  ?$,2 t(B  ?$,2!)(B  ?$,2!&(B  ?$,2! 
(B  ?$,2 p(B  ?$,2!,(B  ?$,2!'(B
!    ?$,2!((B  ?$,2!$(B  ?$,2!%(B  ?$,2 y(B  ?$,2 x(B  ?$,2 r(B  
?$,2 s(B  ?$,2!+(B  ?$,2!*(B  ?$,2 8(B  ?$,2 ,(B  ?$,2!H(B  
?$,2!D(B  ?$,2!L(B  ?$,2!P(B  ?$,address@hidden(B
     ?,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
     ?,L!(B  ?,Lq(B  ?,L$(B  ?,Lt(B  ?,L'(B  ?,Lw(B  ?,L.(B  
?,L~(B  248 249 250 251 ?,Lp(B  253 254 ?,L (B]
    "Cyrillic ALTERNATIVNYJ decoding table.")
***************
*** 179,187 ****
    (define-translation-table 'cyrillic-alternativnyj-encode-table
      (char-table-extra-slot table 0)))
  
  
  (define-ccl-program ccl-decode-alternativnyj
!   `(3
      ((loop
        (r0 = 0)
        (read r1)
--- 346,355 ----
    (define-translation-table 'cyrillic-alternativnyj-encode-table
      (char-table-extra-slot table 0)))
  
+ (makunbound 'cyrillic-alternativnyj-decode-table)
  
  (define-ccl-program ccl-decode-alternativnyj
!   `(4
      ((loop
        (r0 = 0)
        (read r1)
***************
*** 189,194 ****
--- 357,363 ----
          (write-repeat r1)
        ((translate-character cyrillic-alternativnyj-nonascii-translation-table
                              r0 r1)
+        (translate-character utf-8-translation-table-for-decode r0 r1)
         (write-multibyte-character r0 r1)
         (repeat))))))
    "CCL program to decode Alternativnyj.")
***************
*** 200,232 ****
        (translate-character cyrillic-alternativnyj-encode-table r0 r1)
        (write-repeat r1))))
    "CCL program to encode Alternativnyj.")
!            
  (make-coding-system
   'cyrillic-alternativnyj 4 ?A
!  "ALTERNATIVNYJ 8-bit encoding for Cyrillic."
   '(ccl-decode-alternativnyj . ccl-encode-alternativnyj)
!  `((safe-chars . ,(let ((table (make-char-table 'safe-chars))
!                       (i 0))
!                   (while (< i 256)
!                     (aset table (aref cyrillic-alternativnyj-decode-table i)
!                           t)
!                     (setq i (1+ i)))
!                   table))
!    (valid-codes (0 . 175) (224 . 241) 255)
!    (charset-origin-alist (cyrillic-iso8859-5 "ALTERNATIVNYJ"
!                                            cyrillic-encode-koi8-r-char))))
! 
  
  (define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj)
  
  (define-ccl-program ccl-encode-alternativnyj-font
!   '(0
!     ((translate-character cyrillic-alternativnyj-encode-table r0 r1)))
    "CCL program to encode Cyrillic chars to Alternativnyj font.")
  
! (setq font-ccl-encoder-alist
!       (cons '("alternativnyj" . ccl-encode-alternativnyj-font)
!           font-ccl-encoder-alist))
  
  (set-language-info-alist
   "Cyrillic-ALT" `((charset cyrillic-iso8859-5)
--- 369,395 ----
        (translate-character cyrillic-alternativnyj-encode-table r0 r1)
        (write-repeat r1))))
    "CCL program to encode Alternativnyj.")
! 
! (cyrillic-unify-encoding 'cyrillic-alternativnyj-encode-table)
! 
  (make-coding-system
   'cyrillic-alternativnyj 4 ?A
!  "ALTERNATIVNYJ (CP866) 8-bit encoding for Cyrillic."
   '(ccl-decode-alternativnyj . ccl-encode-alternativnyj)
!  `((safe-chars . cyrillic-alternativnyj-encode-table)
!    (valid-codes (0 . 255))
!    (mime-charset . cp866)))
  
  (define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj)
+ (define-coding-system-alias 'cp866 'cyrillic-alternativnyj)
  
  (define-ccl-program ccl-encode-alternativnyj-font
!   `(0
!     (translate-character cyrillic-alternativnyj-encode-table r0 r1))
    "CCL program to encode Cyrillic chars to Alternativnyj font.")
  
! (add-to-list 'font-ccl-encoder-alist
!            '("alternativnyj" . ccl-encode-alternativnyj-font))
  
  (set-language-info-alist
   "Cyrillic-ALT" `((charset cyrillic-iso8859-5)
***************
*** 235,245 ****
                           'translation-table))
                  (coding-system cyrillic-alternativnyj)
                  (coding-priority cyrillic-alternativnyj)
!                 (input-method . "cyrillic-jcuken")
                  (features cyril-util)
                  (unibyte-display . cyrillic-alternativnyj)
                  (sample-text . "Russian (,address@hidden(B)  
,L7T`PRabRcYbU(B!")
                  (documentation . "Support for Cyrillic ALTERNATIVNYJ."))
   '("Cyrillic"))
  
  (provide 'cyrillic)
--- 398,451 ----
                           'translation-table))
                  (coding-system cyrillic-alternativnyj)
                  (coding-priority cyrillic-alternativnyj)
!                 (input-method . "russian-typewriter")
                  (features cyril-util)
                  (unibyte-display . cyrillic-alternativnyj)
                  (sample-text . "Russian (,address@hidden(B)  
,L7T`PRabRcYbU(B!")
                  (documentation . "Support for Cyrillic ALTERNATIVNYJ."))
+  '("Cyrillic"))
+ 
+ (set-language-info-alist
+  "Windows-1251" `((coding-system windows-1251)
+                 (coding-priority windows-1251)
+                 (nonascii-translation
+                  . ,(get 'decode-windows-1252 'translation-table))
+                 (input-method . "russian-typewriter") ; fixme?
+                 (features code-pages)
+                 (documentation . "Support for windows-1251 character set."))
+  '("Cyrillic"))
+ 
+ (set-language-info-alist
+  "Tajik" `((coding-system cyrillic-koi8-t)
+                    (coding-priority cyrillic-koi8-t)
+                    (nonascii-translation
+                     . ,(get 'decode-koi8-t 'translation-table))
+                    (input-method . "russian-typewriter") ; fixme?
+                    (features code-pages)
+                    (documentation . "Support for Tajik using KOI8-T."))
+  '("Cyrillic"))
+ 
+ (set-language-info-alist
+  "Bulgarian" `((coding-system windows-1251)
+                 (coding-priority windows-1251)
+              (nonascii-translation
+               . ,(get 'decode-windows-1251 'translation-table))
+              (input-method . "bulgarian-standard")
+                 (features code-pages)
+              (documentation
+               . "Support for Bulgrian with windows-1251 character set."))
+  '("Cyrillic"))
+ 
+ (set-language-info-alist
+  "Belarusian" `((coding-system windows-1251)
+               (coding-priority windows-1251)
+               (nonascii-translation
+                . ,(get 'decode-windows-1251 'translation-table))
+               (input-method . "belarusian")
+               (features code-pages)
+               (documentation
+                . "Support for Belarusian with windows-1251 character set.
+ \(The name Belarusian replaced Byelorussian in the early 1990s.)"))
   '("Cyrillic"))
  
  (provide 'cyrillic)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]