]> code.delx.au - gnu-emacs/blobdiff - lisp/international/code-pages.el
Merge from emacs--rel--22
[gnu-emacs] / lisp / international / code-pages.el
index 73c953a2fe4a6c4bbb6a1f855b2b75ab570ddce7..5007a00b16d2bba0927380a704f8308733557b19 100644 (file)
@@ -1,7 +1,8 @@
 ;;; code-pages.el --- coding systems for assorted codepages  -*-coding: utf-8;-*-
 
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
-;; Copyright (C) 2004, 2005
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;;   Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2006, 2007
 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
 ;;   Registration Number H14PRO021
 
@@ -22,8 +23,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -130,7 +131,7 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal."
   (interactive
    (let ((completion-ignore-case t)
         (candidates (cp-supported-codepages)))
-     (list (completing-read "Setup DOS Codepage: (default 437) " candidates
+     (list (completing-read "Setup DOS Codepage (default 437): " candidates
                            nil t nil nil "437"))))
   (let ((cp (format "cp%s" codepage)))
     (unless (coding-system-p (intern cp))
@@ -193,15 +194,18 @@ Return an updated `non-iso-charset-alist'."
              ;; a separate table that only translates the coding
              ;; system's safe-chars.
              (cons 'translation-table-for-input 'ucs-mule-to-mule-unicode)))
-       (push (list ',name
-                  nil                  ; charset list
-                  ',decoder
-                  (let (l)             ; code range
-                    (dolist (elt (reverse codes))
-                      (push (cdr elt) l)
-                      (push (car elt) l))
-                    (list l)))
-            non-iso-charset-alist))))
+       (let ((slot (assq ',name non-iso-charset-alist))
+            (elt (list nil                     ; charset list
+                       ',decoder
+                       (let (l)                ; code range
+                         (dolist (elt (reverse codes))
+                           (push (cdr elt) l)
+                           (push (car elt) l))
+                         (list l)))))
+        (if (not slot)
+            (push (cons ',name elt) non-iso-charset-alist)
+          (setcdr slot elt)
+          non-iso-charset-alist)))))
 
 (eval-when-compile (defvar non-iso-charset-alist))
 
@@ -213,6 +217,7 @@ Return an updated `non-iso-charset-alist'."
 
 ;; Fixme: Do better for mode-line mnemonics?
 
+;;;###autoload(autoload-coding-system 'cp437 '(require 'code-pages))
 (cp-make-coding-system
  cp437
  [?\Ç
@@ -344,6 +349,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp737 '(require 'code-pages))
 (cp-make-coding-system
  cp737
  [?\Α
@@ -476,6 +482,7 @@ Return an updated `non-iso-charset-alist'."
   ?\ ])
 (coding-system-put 'cp737 'mime-charset nil) ; not in IANA list
 
+;;;###autoload(autoload-coding-system 'cp775 '(require 'code-pages))
 (cp-make-coding-system
  cp775
  [?\Ć
@@ -607,6 +614,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp850 '(require 'code-pages))
 (cp-make-coding-system
  cp850
  [?\Ç
@@ -738,6 +746,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp851 '(require 'code-pages))
 (cp-make-coding-system
  cp851
  [?\Ç
@@ -869,6 +878,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp852 '(require 'code-pages))
 (cp-make-coding-system
  cp852
  [?\Ç
@@ -1000,6 +1010,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp855 '(require 'code-pages))
 (cp-make-coding-system
  cp855
  [?\ђ
@@ -1131,6 +1142,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp857 '(require 'code-pages))
 (cp-make-coding-system
  cp857
  [?\Ç
@@ -1262,6 +1274,139 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp858 '(require 'code-pages))
+(cp-make-coding-system
+ cp858
+ [?\Ç
+  ?\ü
+  ?\é
+  ?\â
+  ?\ä
+  ?\à
+  ?\å
+  ?\ç
+  ?\ê
+  ?\ë
+  ?\è
+  ?\ï
+  ?\î
+  ?\ì
+  ?\Ä
+  ?\Å
+  ?\É
+  ?\æ
+  ?\Æ
+  ?\ô
+  ?\ö
+  ?\ò
+  ?\û
+  ?\ù
+  ?\ÿ
+  ?\Ö
+  ?\Ü
+  ?\ø
+  ?\£
+  ?\Ø
+  ?\×
+  ?\ƒ
+  ?\á
+  ?\í
+  ?\ó
+  ?\ú
+  ?\ñ
+  ?\Ñ
+  ?\ª
+  ?\º
+  ?\¿
+  ?\®
+  ?\¬
+  ?\½
+  ?\¼
+  ?\¡
+  ?\«
+  ?\»
+  ?\░
+  ?\▒
+  ?\▓
+  ?\│
+  ?\┤
+  ?\Á
+  ?\Â
+  ?\À
+  ?\©
+  ?\╣
+  ?\║
+  ?\╗
+  ?\╝
+  ?\¢
+  ?\¥
+  ?\┐
+  ?\└
+  ?\┴
+  ?\┬
+  ?\├
+  ?\─
+  ?\┼
+  ?\ã
+  ?\Ã
+  ?\╚
+  ?\╔
+  ?\╩
+  ?\╦
+  ?\╠
+  ?\═
+  ?\╬
+  ?\¤
+  ?\ð
+  ?\Ð
+  ?\Ê
+  ?\Ë
+  ?\È
+  ?\€
+  ?\Í
+  ?\Î
+  ?\Ï
+  ?\┘
+  ?\┌
+  ?\█
+  ?\▄
+  ?\¦
+  ?\Ì
+  ?\▀
+  ?\Ó
+  ?\ß
+  ?\Ô
+  ?\Ò
+  ?\õ
+  ?\Õ
+  ?\µ
+  ?\þ
+  ?\Þ
+  ?\Ú
+  ?\Û
+  ?\Ù
+  ?\ý
+  ?\Ý
+  ?\¯
+  ?\´
+  ?\­
+  ?\±
+  ?\‗
+  ?\¾
+  ?\¶
+  ?\§
+  ?\÷
+  ?\¸
+  ?\°
+  ?\¨
+  ?\·
+  ?\¹
+  ?\³
+  ?\²
+  ?\■
+  ?\ ])
+
+;;;###autoload(autoload-coding-system 'cp860 '(require 'code-pages))
 (cp-make-coding-system
  cp860
  [?\Ç
@@ -1393,6 +1538,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp861 '(require 'code-pages))
 (cp-make-coding-system
  cp861
  [?\Ç
@@ -1524,6 +1670,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp862 '(require 'code-pages))
 (cp-make-coding-system
  cp862
  [?\א
@@ -1655,6 +1802,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp863 '(require 'code-pages))
 (cp-make-coding-system
  cp863
  [?\Ç
@@ -1786,6 +1934,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp864 '(require 'code-pages))
 (cp-make-coding-system
  cp864
  [?\°
@@ -1917,6 +2066,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp865 '(require 'code-pages))
 (cp-make-coding-system
  cp865
  [?\Ç
@@ -2048,6 +2198,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp866 '(require 'code-pages))
 (cp-make-coding-system
  cp866
  [?\А
@@ -2181,6 +2332,7 @@ Return an updated `non-iso-charset-alist'."
  "CP866 (Cyrillic)."
  ?A)
 
+;;;###autoload(autoload-coding-system 'cp869 '(require 'code-pages))
 (cp-make-coding-system
  cp869
  [nil
@@ -2312,6 +2464,7 @@ Return an updated `non-iso-charset-alist'."
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp874 '(require 'code-pages))
 (cp-make-coding-system
  cp874
  [?\€
@@ -2444,6 +2597,7 @@ Return an updated `non-iso-charset-alist'."
   nil])
 
 ;;;###autoload(autoload-coding-system 'windows-1250 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1250 '(require 'code-pages))
 (cp-make-coding-system
  windows-1250
  [?\€
@@ -2576,6 +2730,7 @@ Return an updated `non-iso-charset-alist'."
   ?\˙])
 
 ;;;###autoload(autoload-coding-system 'windows-1253 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1253 '(require 'code-pages))
 (cp-make-coding-system
  windows-1253
  [?\€
@@ -2709,6 +2864,7 @@ Return an updated `non-iso-charset-alist'."
  nil ?g) ;; Greek
 
 ;;;###autoload(autoload-coding-system 'windows-1254 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1254 '(require 'code-pages))
 (cp-make-coding-system
  windows-1254
  [?\€
@@ -2842,6 +2998,7 @@ Return an updated `non-iso-charset-alist'."
 
 ;; yi_US
 ;;;###autoload(autoload-coding-system 'windows-1255 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1255 '(require 'code-pages))
 (cp-make-coding-system
  windows-1255
  [?\€
@@ -2975,6 +3132,7 @@ Return an updated `non-iso-charset-alist'."
  nil ?h) ;; Hebrew
 
 ;;;###autoload(autoload-coding-system 'windows-1256 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1256 '(require 'code-pages))
 (cp-make-coding-system
  windows-1256
  [?\€
@@ -3108,6 +3266,7 @@ Return an updated `non-iso-charset-alist'."
  nil ?a) ;; Arabic
 
 ;;;###autoload(autoload-coding-system 'windows-1257 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1257 '(require 'code-pages))
 (cp-make-coding-system
  windows-1257
  [?\€
@@ -3240,6 +3399,7 @@ Return an updated `non-iso-charset-alist'."
   nil])
 
 ;;;###autoload(autoload-coding-system 'windows-1258 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1258 '(require 'code-pages))
 (cp-make-coding-system
  windows-1258
  [?\€
@@ -3371,6 +3531,7 @@ Return an updated `non-iso-charset-alist'."
   ?\₫
   ?\ÿ])
 
+;;;###autoload(autoload-coding-system 'next '(require 'code-pages))
 (cp-make-coding-system
  next
  [?\ 
@@ -3414,11 +3575,11 @@ Return an updated `non-iso-charset-alist'."
   ?\ƒ
   ?\§
   ?\¤
-  nil
+  ?\’
   ?\“
   ?\«
-  nil
-  nil
+  ?\‹
+  ?\›
   ?\fi
   ?\fl
   ?\®
@@ -3429,8 +3590,8 @@ Return an updated `non-iso-charset-alist'."
   ?\¦
   ?\¶
   ?\•
-  nil
-  nil
+  ?\‚
+  ?\„
   ?\”
   ?\»
   ?\…
@@ -3503,6 +3664,7 @@ Return an updated `non-iso-charset-alist'."
   nil]
  "NeXTstep encoding." ?N)
 
+;;;###autoload(autoload-coding-system 'koi8-t '(require 'code-pages))
 (cp-make-coding-system
  koi8-t                                        ; used by glibc for tg_TJ
  [?\қ
@@ -3771,65 +3933,96 @@ Return an updated `non-iso-charset-alist'."
 
 ;; Unicode-based alternative which has the possible advantage of
 ;; having its relative sparseness specified.
+;;;###autoload(autoload-coding-system 'iso-8859-6 '(require 'code-pages))
 (cp-make-coding-system
  ;; The base system uses arabic-iso-8bit, but that's not a MIME charset.
  iso-8859-6
- [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
-  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+ [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
   ?\ 
-  ?\¤
-  ?\،
-  ?\­
-  ?\؛
-  ?\؟
-  ?\ء
-  ?\آ
-  ?\أ
-  ?\ؤ
-  ?\إ
-  ?\ئ
-  ?\ا
-  ?\ب
-  ?\ة
-  ?\ت
-  ?\ث
-  ?\ج
-  ?\ح
-  ?\خ
-  ?\د
-  ?\ذ
-  ?\ر
-  ?\ز
-  ?\س
-  ?\ش
-  ?\ص
-  ?\ض
-  ?\ط
-  ?\ظ
-  ?\ع
-  ?\غ
-  ?\ـ
-  ?\ف
-  ?\ق
-  ?\ك
-  ?\ل
-  ?\م
-  ?\ن
-  ?\ه
-  ?\و
-  ?\ى
-  ?\ي
-  ?\ً
-  ?\ٌ
-  ?\ٍ
-  ?\َ
-  ?\ُ
-  ?\ِ
-  ?\ّ
-  ?\ْ
-  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
-  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
-  nil nil nil nil nil nil nil nil nil nil nil]
+  nil
+  nil
+  nil
+  ?¤
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  ?،
+  ?­
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  ?؛
+  nil
+  nil
+  nil
+  ?؟
+  nil
+  ?ء
+  ?آ
+  ?أ
+  ?ؤ
+  ?إ
+  ?ئ
+  ?ا
+  ?ب
+  ?ة
+  ?ت
+  ?ث
+  ?ج
+  ?ح
+  ?خ
+  ?د
+  ?ذ
+  ?ر
+  ?ز
+  ?س
+  ?ش
+  ?ص
+  ?ض
+  ?ط
+  ?ظ
+  ?ع
+  ?غ
+  nil
+  nil
+  nil
+  nil
+  nil
+  ?ـ
+  ?ف
+  ?ق
+  ?ك
+  ?ل
+  ?م
+  ?ن
+  ?ه
+  ?و
+  ?ى
+  ?ي
+  ?ً
+  ?ٌ
+  ?ٍ
+  ?َ
+  ?ُ
+  ?ِ
+  ?ّ
+  ?ْ
+  nil nil nil nil nil nil nil nil nil nil nil nil nil]
  "Unicode-based Arabic ISO/IEC 8859-6 (MIME: ISO-8859-6)"
  ?6)
 (define-coding-system-alias 'arabic-iso-8bit 'iso-8859-6)
@@ -4186,6 +4379,7 @@ Return an updated `non-iso-charset-alist'."
  nil ?G)
 (coding-system-put 'georgian-ps 'mime-charset nil) ; not in IANA list
 
+;;;###autoload(autoload-coding-system 'cp720 '(require 'code-pages))
 ;; From http://www.microsoft.com/globaldev/reference/oem/720.htm
 (cp-make-coding-system
  cp720
@@ -4319,6 +4513,7 @@ Return an updated `non-iso-charset-alist'."
   ?\ ])
 (coding-system-put 'cp720 'mime-charset nil) ; not in IANA list
 
+;;;###autoload(autoload-coding-system 'cp1125 '(require 'code-pages))
 ;; http://oss.software.ibm.com/cvs/icu/charset/data/ucm/ibm-1125_P100-2000.ucm
 (cp-make-coding-system
  cp1125
@@ -4457,14 +4652,15 @@ Return an updated `non-iso-charset-alist'."
 
 ;; Suggested by Anton Zinoviev <anton@lml.bas.bg>: Bulgarian DOS
 ;; codepage.  Table at
-;; <URL:http://czyborra.com/charsets/bulgarian-mik.txt.gz>.
+;; <http://en.wikipedia.org/wiki/MIK_Code_page>.
+;;;###autoload(autoload-coding-system 'mik '(require 'code-pages))
 (cp-make-coding-system
  mik
  [?А ?Б ?В ?Г ?Д ?Е ?Ж ?З ?И ?Й ?К ?Л ?М ?Н ?О ?П ?Р ?С ?Т ?У ?Ф ?Х ?Ц
   ?Ч ?Ш ?Щ ?Ъ ?Ы ?Ь ?Э ?Ю ?Я ?а ?б ?в ?г ?д ?е ?ж ?з ?и ?й ?к ?л ?м ?н
   ?о ?п ?р ?с ?т ?у ?ф ?х ?ц ?ч ?ш ?щ ?ъ ?ы ?ь ?э ?ю ?я ?└ ?┴ ?┬ ?├ ?─
   ?┼ ?╣ ?║ ?╚ ?╔ ?╩ ?╦ ?╠ ?═ ?╬ ?┐ ?░ ?▒ ?▓ ?│ ?┤ ?№ ?§ ?╗ ?╝ ?┘ ?┌ ?█
-  ?▄ ?▌ ?▐ ?▀ ?α ?β ?Γ ?π ?Σ ?σ ?μ ?τ ?Φ ?Θ ?Ω ?δ ?∞ ?∅ ?∈ ?∩ ?≡ ?± ?≥
+  ?▄ ?▌ ?▐ ?▀ ?α ?ß ?Γ ?π ?Σ ?σ ?µ ?τ ?Φ ?Θ ?Ω ?δ ?∞ ?φ ?ε ?∩ ?≡ ?± ?≥
   ?≤ ?⌠ ?⌡ ?÷ ?≈ ?° ?∙ ?· ?√ ?ⁿ ?² ?■ ? ])
 (coding-system-put 'mik 'mime-charset nil)
 
@@ -4502,11 +4698,14 @@ Return an updated `non-iso-charset-alist'."
     ;; Define cp125* as aliases for all windows-125*, so on Windows
     ;; we can just concat "cp" to the ANSI codepage we get from the system
     ;; and not have to worry about whether it should be "cp" or "windows-".
-    (if (coding-system-p w)
-       (define-coding-system-alias c w))
-    ;; Compatibility with codepage.el, though cp... are not the
-    ;; canonical names.
-    (push (assoc w non-iso-charset-alist) non-iso-charset-alist)))
+    (when (coding-system-p w)
+      (define-coding-system-alias c w)
+      ;; Compatibility with codepage.el, though cp... are not the
+      ;; canonical names.
+      (if (not (assq c non-iso-charset-alist))
+         (let ((slot (assq w non-iso-charset-alist)))
+           (if slot
+               (push (cons c (cdr slot)) non-iso-charset-alist)))))))
 
 (provide 'code-pages)