]> code.delx.au - gnu-emacs/blobdiff - lisp/international/code-pages.el
Merge from emacs--rel--22
[gnu-emacs] / lisp / international / code-pages.el
index c0c4a2e93f504617b4159c3d48ad2baafd60123b..5007a00b16d2bba0927380a704f8308733557b19 100644 (file)
@@ -1,6 +1,10 @@
 ;;; code-pages.el --- coding systems for assorted codepages  -*-coding: utf-8;-*-
 
-;; Copyright (C) 2001, 2002  Free Software Foundation, Inc.
+;; 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
 
 ;; Author: Dave Love <fx@gnu.org>
 ;; Keywords: i18n
@@ -19,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:
 
 
 ;; Those covered are: cp437, cp737, cp720, cp775, cp850, cp851, cp852,
 ;; cp855, cp857, cp860, cp861, cp862, cp863, cp864, cp865, cp866,
-;; cp869, cp874, cp1125, windows-1250, windows-1251, windows-1252,
-;; windows-1253, windows-1254, windows-1255, windows-1256,
-;; windows-1257, windows-1258, next, koi8-u, iso-8859-6,
-;; iso-8859-10, iso-8859-11, iso-8859-16, koi8-t, georgian-ps.  This
-;; is meant to include all the single-byte ones relevant to GNU (used
-;; in glibc-defined locales); we don't yet get all the multibyte ones
-;; in base Emacs.
+;; cp869, cp874, cp1125, windows-1250, windows-1253, windows-1254,
+;; windows-1255, windows-1256, windows-1257, windows-1258, next,
+;; iso-8859-6, iso-8859-10, iso-8859-11, iso-8859-16, koi8-t,
+;; georgian-ps.  This is meant to include all the single-byte ones
+;; relevant to GNU (used in glibc-defined locales); we don't yet get
+;; all the multibyte ones in base Emacs.
 
 ;; Note that various of these can clash with definitions in
 ;; codepage.el; we try to avoid damage from that.  A few CPs from
 
 ;;; Code:
 
-(defun cp-make-translation-table (v)
+;; The defsubsts here are just so that language files can use
+;; `cp-make-coding-system' and not require functions from this file
+;; at runtime.
+
+(defsubst cp-make-translation-table (v)
   "Return a translation table made from 128-long vector V.
 V comprises characters encodable by mule-utf-8."
   (let ((encoding-vector (make-vector 256 0)))
@@ -75,7 +82,7 @@ V comprises characters encodable by mule-utf-8."
                      ucs-mule-to-mule-unicode)
       tab)))
 
-(defun cp-valid-codes (v)
+(defsubst cp-valid-codes (v)
   "Derive a valid-codes list for translation vector V.
 See `make-coding-system'."
   (let (pairs
@@ -94,13 +101,6 @@ See `make-coding-system'."
     (if start (push (cons start end) pairs))
     (nreverse pairs)))
 
-(defun cp-fix-safe-chars (cs)
-  "This is an obsolete function.  
-It exists just for backward compatibility, and it does nothing.")
-(make-obsolete 'cp-fix-safe-chars
-              "Unnecessary function.  Calling it has no effect."
-              "21.3")
-
 ;; Fix things that have been, or might be, done by codepage.el.
 (eval-after-load "codepage"
   '(progn
@@ -131,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))
@@ -145,9 +145,10 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal."
 (defmacro cp-make-coding-system (name v &optional doc-string mnemonic)
   "Make coding system NAME for and 8-bit, extended-ASCII character set.
 V is a 128-long vector of characters to translate the upper half of
-the charactert set.  DOC-STRING and MNEMONIC are used as the
+the character set.  DOC-STRING and MNEMONIC are used as the
 corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
-?* is used."
+?* is used.
+Return an updated `non-iso-charset-alist'."
   (let* ((encoder (intern (format "encode-%s" name)))
         (decoder (intern (format "decode-%s" name)))
         (ccl-decoder
@@ -192,17 +193,21 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
              ;; For Quail translation.  Fixme: this should really be
              ;; 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))))
+             (cons 'translation-table-for-input 'ucs-mule-to-mule-unicode)))
+       (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))
 
 ;; These tables were mostly derived by running somthing like
 ;; `recode -f cpxxx/..utf-8' on a binary file filled by
@@ -212,6 +217,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 
 ;; Fixme: Do better for mode-line mnemonics?
 
+;;;###autoload(autoload-coding-system 'cp437 '(require 'code-pages))
 (cp-make-coding-system
  cp437
  [?\Ç
@@ -343,6 +349,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp737 '(require 'code-pages))
 (cp-make-coding-system
  cp737
  [?\Α
@@ -475,6 +482,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ ])
 (coding-system-put 'cp737 'mime-charset nil) ; not in IANA list
 
+;;;###autoload(autoload-coding-system 'cp775 '(require 'code-pages))
 (cp-make-coding-system
  cp775
  [?\Ć
@@ -606,6 +614,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp850 '(require 'code-pages))
 (cp-make-coding-system
  cp850
  [?\Ç
@@ -737,6 +746,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp851 '(require 'code-pages))
 (cp-make-coding-system
  cp851
  [?\Ç
@@ -868,6 +878,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp852 '(require 'code-pages))
 (cp-make-coding-system
  cp852
  [?\Ç
@@ -999,6 +1010,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp855 '(require 'code-pages))
 (cp-make-coding-system
  cp855
  [?\ђ
@@ -1130,6 +1142,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp857 '(require 'code-pages))
 (cp-make-coding-system
  cp857
  [?\Ç
@@ -1261,6 +1274,139 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###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
  [?\Ç
@@ -1392,6 +1538,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp861 '(require 'code-pages))
 (cp-make-coding-system
  cp861
  [?\Ç
@@ -1523,6 +1670,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp862 '(require 'code-pages))
 (cp-make-coding-system
  cp862
  [?\א
@@ -1654,6 +1802,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp863 '(require 'code-pages))
 (cp-make-coding-system
  cp863
  [?\Ç
@@ -1785,6 +1934,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp864 '(require 'code-pages))
 (cp-make-coding-system
  cp864
  [?\°
@@ -1916,6 +2066,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp865 '(require 'code-pages))
 (cp-make-coding-system
  cp865
  [?\Ç
@@ -2047,6 +2198,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp866 '(require 'code-pages))
 (cp-make-coding-system
  cp866
  [?\А
@@ -2180,6 +2332,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
  "CP866 (Cyrillic)."
  ?A)
 
+;;;###autoload(autoload-coding-system 'cp869 '(require 'code-pages))
 (cp-make-coding-system
  cp869
  [nil
@@ -2311,6 +2464,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp874 '(require 'code-pages))
 (cp-make-coding-system
  cp874
  [?\€
@@ -2442,6 +2596,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   nil
   nil])
 
+;;;###autoload(autoload-coding-system 'windows-1250 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1250 '(require 'code-pages))
 (cp-make-coding-system
  windows-1250
  [?\€
@@ -2573,26 +2729,27 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ţ
   ?\˙])
 
-;; be_BY, bg_BG
+;;;###autoload(autoload-coding-system 'windows-1253 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1253 '(require 'code-pages))
 (cp-make-coding-system
- windows-1251
- [?\Ђ
-  ?\Ѓ
+ windows-1253
+ [?\
+  nil
   ?\‚
-  ?\ѓ
+  ?\ƒ
   ?\„
   ?\…
   ?\†
   ?\‡
-  ?\€
+  nil
   ?\‰
-  ?\Љ
+  nil
   ?\‹
-  ?\Њ
-  ?\Ќ
-  ?\Ћ
-  ?\Џ
-  ?\ђ
+  nil
+  nil
+  nil
+  nil
+  nil
   ?\‘
   ?\’
   ?\“
@@ -2602,302 +2759,39 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\—
   nil
   ?\™
-  ?\љ
+  nil
   ?\›
-  ?\њ
-  ?\ќ
-  ?\ћ
-  ?\џ
+  nil
+  nil
+  nil
+  nil
   ?\ 
-  ?\Ў
-  ?\ў
-  ?\Ј
+  ?\΅
+  ?\Ά
+  ?\£
   ?\¤
-  ?\Ґ
+  ?\¥
   ?\¦
   ?\§
-  ?\Ё
+  ?\¨
   ?\©
-  ?\Є
+  nil
   ?\«
   ?\¬
   ?\­
   ?\®
-  ?\Ї
+  ?\
   ?\°
   ?\±
-  ?\І
-  ?\і
-  ?\ґ
+  ?\²
+  ?\³
+  ?\΄
   ?\µ
   ?\¶
   ?\·
-  ?\ё
-  ?\№
-  ?\є
-  ?\»
-  ?\ј
-  ?\Ѕ
-  ?\ѕ
-  ?\ї
-  ?\А
-  ?\Б
-  ?\В
-  ?\Г
-  ?\Д
-  ?\Е
-  ?\Ж
-  ?\З
-  ?\И
-  ?\Й
-  ?\К
-  ?\Л
-  ?\М
-  ?\Н
-  ?\О
-  ?\П
-  ?\Р
-  ?\С
-  ?\Т
-  ?\У
-  ?\Ф
-  ?\Х
-  ?\Ц
-  ?\Ч
-  ?\Ш
-  ?\Щ
-  ?\Ъ
-  ?\Ы
-  ?\Ь
-  ?\Э
-  ?\Ю
-  ?\Я
-  ?\а
-  ?\б
-  ?\в
-  ?\г
-  ?\д
-  ?\е
-  ?\ж
-  ?\з
-  ?\и
-  ?\й
-  ?\к
-  ?\л
-  ?\м
-  ?\н
-  ?\о
-  ?\п
-  ?\р
-  ?\с
-  ?\т
-  ?\у
-  ?\ф
-  ?\х
-  ?\ц
-  ?\ч
-  ?\ш
-  ?\щ
-  ?\ъ
-  ?\ы
-  ?\ь
-  ?\э
-  ?\ю
-  ?\я]
- nil ?b)
-
-(cp-make-coding-system
- windows-1252
- [?\€
-  nil
-  ?\‚
-  ?\ƒ
-  ?\„
-  ?\…
-  ?\†
-  ?\‡
-  ?\ˆ
-  ?\‰
-  ?\Š
-  ?\‹
-  ?\Œ
-  nil
-  ?\Ž
-  ?\ž
-  nil
-  ?\‘
-  ?\’
-  ?\“
-  ?\”
-  ?\•
-  ?\–
-  ?\—
-  ?\˜
-  ?\™
-  ?\š
-  ?\›
-  ?\œ
-  nil
-  nil
-  ?\Ÿ
-  ?\ 
-  ?\¡
-  ?\¢
-  ?\£
-  ?\¤
-  ?\¥
-  ?\¦
-  ?\§
-  ?\¨
-  ?\©
-  ?\ª
-  ?\«
-  ?\¬
-  ?\­
-  ?\®
-  ?\¯
-  ?\°
-  ?\±
-  ?\²
-  ?\³
-  ?\´
-  ?\µ
-  ?\¶
-  ?\·
-  ?\¸
-  ?\¹
-  ?\º
-  ?\»
-  ?\¼
-  ?\½
-  ?\¾
-  ?\¿
-  ?\À
-  ?\Á
-  ?\Â
-  ?\Ã
-  ?\Ä
-  ?\Å
-  ?\Æ
-  ?\Ç
-  ?\È
-  ?\É
-  ?\Ê
-  ?\Ë
-  ?\Ì
-  ?\Í
-  ?\Î
-  ?\Ï
-  ?\Ð
-  ?\Ñ
-  ?\Ò
-  ?\Ó
-  ?\Ô
-  ?\Õ
-  ?\Ö
-  ?\×
-  ?\Ø
-  ?\Ù
-  ?\Ú
-  ?\Û
-  ?\Ü
-  ?\Ý
-  ?\Þ
-  ?\ß
-  ?\à
-  ?\á
-  ?\â
-  ?\ã
-  ?\ä
-  ?\å
-  ?\æ
-  ?\ç
-  ?\è
-  ?\é
-  ?\ê
-  ?\ë
-  ?\ì
-  ?\í
-  ?\î
-  ?\ï
-  ?\ð
-  ?\ñ
-  ?\ò
-  ?\ó
-  ?\ô
-  ?\õ
-  ?\ö
-  ?\÷
-  ?\ø
-  ?\ù
-  ?\ú
-  ?\û
-  ?\ü
-  ?\ý
-  ?\þ
-  ?\ÿ])
-
-(cp-make-coding-system
- windows-1253
- [?\€
-  nil
-  ?\‚
-  ?\ƒ
-  ?\„
-  ?\…
-  ?\†
-  ?\‡
-  nil
-  ?\‰
-  nil
-  ?\‹
-  nil
-  nil
-  nil
-  nil
-  nil
-  ?\‘
-  ?\’
-  ?\“
-  ?\”
-  ?\•
-  ?\–
-  ?\—
-  nil
-  ?\™
-  nil
-  ?\›
-  nil
-  nil
-  nil
-  nil
-  ?\ 
-  ?\΅
-  ?\Ά
-  ?\£
-  ?\¤
-  ?\¥
-  ?\¦
-  ?\§
-  ?\¨
-  ?\©
-  nil
-  ?\«
-  ?\¬
-  ?\­
-  ?\®
-  ?\―
-  ?\°
-  ?\±
-  ?\²
-  ?\³
-  ?\΄
-  ?\µ
-  ?\¶
-  ?\·
-  ?\Έ
-  ?\Ή
-  ?\Ί
+  ?\Έ
+  ?\Ή
+  ?\Ί
   ?\»
   ?\Ό
   ?\½
@@ -2969,6 +2863,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   nil]
  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
  [?\€
@@ -3101,6 +2997,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ÿ])
 
 ;; 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
  [?\€
@@ -3233,25 +3131,27 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   nil]
  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
  [?\€
-  ?\Ù 
+  ?\Ù¾
   ?\‚
-  ?\١
+  ?\ƒ
   ?\„
   ?\…
   ?\†
   ?\‡
-  ?\٢
-  ?\٣
-  ?\Ù¤
+  ?\ˆ
+  ?\
+  ?\Ù¹
   ?\‹
-  ?\٥
-  ?\٦
-  ?\٧
-  ?\٨
-  ?\٩
+  ?\Œ
+  ?\چ
+  ?\ژ
+  ?\ڈ
+  ?\گ
   ?\‘
   ?\’
   ?\“
@@ -3259,112 +3159,114 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\•
   ?\–
   ?\—
-  ?\؛
+  ?\ک
   ?\™
-  ?\؟
+  ?\ڑ
   ?\›
-  ?\ء
-  ?\آ
-  ?\أ
-  ?\Ÿ
+  ?\œ
+  ?\
+  ?\
+  ?\ں
   ?\ 
-  ?\ؤ
-  ?\إ
+  ?\Ø\8c
+  ?\¢
   ?\£
   ?\¤
-  ?\ئ
+  ?\¥
   ?\¦
   ?\§
-  ?\ا
+  ?\¨
   ?\©
-  ?\ب
+  ?\ھ
   ?\«
   ?\¬
   ?\­
   ?\®
-  ?\پ
+  ?\¯
   ?\°
   ?\±
-  ?\ة
-  ?\ت
-  ?\ث
+  ?\²
+  ?\³
+  ?\´
   ?\µ
   ?\¶
   ?\·
+  ?\¸
+  ?\¹
+  ?\؛
+  ?\»
+  ?\¼
+  ?\½
+  ?\¾
+  ?\؟
+  ?\ہ
+  ?\ء
+  ?\آ
+  ?\أ
+  ?\ؤ
+  ?\إ
+  ?\ئ
+  ?\ا
+  ?\ب
+  ?\ة
+  ?\ت
+  ?\ث
   ?\ج
-  ?\چ
   ?\ح
-  ?\»
   ?\خ
   ?\د
   ?\ذ
   ?\ر
-  ?\À
   ?\ز
-  ?\Â
-  ?\ژ
   ?\س
   ?\ش
   ?\ص
-  ?\Ç
-  ?\È
-  ?\É
-  ?\Ê
-  ?\Ë
   ?\ض
+  ?\×
   ?\ط
-  ?\Î
-  ?\Ï
-  ?\ㄓ
+  ?\ظ
   ?\ع
   ?\غ
   ?\ـ
-  ?\Ô
   ?\ف
   ?\ق
-  ?\×
   ?\ك
-  ?\Ù
-  ?\گ
-  ?\Û
-  ?\Ü
+  ?\à
   ?\ل
+  ?\â
   ?\م
   ?\ن
-  ?\à
   ?\ه
-  ?\â
-  ?\ځ
   ?\و
-  ?\ى
-  ?\ي
   ?\ç
   ?\è
   ?\é
   ?\ê
   ?\ë
-  ?\Ù\8b
-  ?\Ù\8c
+  ?\Ù\89
+  ?\Ù\8a
   ?\î
   ?\ï
+  ?\ً
+  ?\ٌ
   ?\ٍ
   ?\َ
+  ?\ô
   ?\ُ
   ?\ِ
-  ?\ô
-  ?\ّ
-  ?\ْ
   ?\÷
-  nil
+  ?\ّ
   ?\ù
-  nil
+  ?\ْ
   ?\û
   ?\ü
   ?\‎
   ?\‏
-  ?\ÿ]
+  ?\ے]
  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
  [?\€
@@ -3496,6 +3398,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ž
   nil])
 
+;;;###autoload(autoload-coding-system 'windows-1258 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1258 '(require 'code-pages))
 (cp-make-coding-system
  windows-1258
  [?\€
@@ -3627,6 +3531,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\₫
   ?\ÿ])
 
+;;;###autoload(autoload-coding-system 'next '(require 'code-pages))
 (cp-make-coding-system
  next
  [?\ 
@@ -3670,11 +3575,11 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ƒ
   ?\§
   ?\¤
-  nil
+  ?\’
   ?\“
   ?\«
-  nil
-  nil
+  ?\‹
+  ?\›
   ?\fi
   ?\fl
   ?\®
@@ -3685,8 +3590,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\¦
   ?\¶
   ?\•
-  nil
-  nil
+  ?\‚
+  ?\„
   ?\”
   ?\»
   ?\…
@@ -3759,6 +3664,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   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
  [?\қ
@@ -3918,6 +3824,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 ;;   ISO 8859-16 was primarily designed for single-byte encoding the Romanian
 ;;   language. The UTF-8 charset is the preferred and in today's MIME software
 ;;   more widely implemented encoding suitable for Romanian.
+;;;###autoload(autoload-coding-system 'iso-8859-16 '(require 'code-pages))
 (cp-make-coding-system
  iso-latin-10                          ; consistent with, e.g. Latin-1
  [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
@@ -4026,69 +3933,101 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 
 ;; 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)
 
+;;;###autoload(autoload-coding-system 'iso-8859-10 '(require 'code-pages))
 (cp-make-coding-system
  iso-latin-6
  [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
@@ -4195,26 +4134,27 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 (define-coding-system-alias 'latin-6 'iso-latin-6)
 
 ;; used by lt_LT, lv_LV, mi_NZ
+;;;###autoload(autoload-coding-system 'iso-8859-13 '(require 'code-pages))
 (cp-make-coding-system
  iso-latin-7
  [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
   ?\ 
-  ?\¡
+  ?\
   ?\¢
   ?\£
   ?\¤
   ?\„
   ?\¦
   ?\§
-  ?\¨
+  ?\Ø
   ?\©
-  ?\ª
+  ?\Ŗ
   ?\«
   ?\¬
   ?\­
   ?\®
-  ?\¯
+  ?\Æ
   ?\°
   ?\±
   ?\²
@@ -4223,14 +4163,14 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\µ
   ?\¶
   ?\·
-  ?\¸
+  ?\ø
   ?\¹
-  ?\º
+  ?\ŗ
   ?\»
   ?\¼
   ?\½
   ?\¾
-  ?\¿
+  ?\æ
   ?\Ą
   ?\Į
   ?\Ā
@@ -4305,6 +4245,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 ;; Fixme: check on the C1 characters which libiconv includes.  They
 ;; are reproduced below, but are probably wrong.  I can't find an
 ;; official definition of georgian-ps.
+;;;###autoload(autoload-coding-system 'georgian-ps '(require 'code-pages))
 (cp-make-coding-system
  georgian-ps                           ; used by glibc for ka_GE
  [?\\80
@@ -4438,6 +4379,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
  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
@@ -4571,6 +4513,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ ])
 (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
@@ -4696,11 +4639,11 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\і
   ?\Ї
   ?\ї
-  ?\÷
-  ?\±
+  ?\·
+  ?\
   ?\№
   ?\¤
-  ?\
+  ?\
   ?\ ])
 (define-coding-system-alias 'ruscii 'cp1125)
 ;; Original name for cp1125, says Serhii Hlodin <hlodin@lutsk.bank.gov.ua>
@@ -4709,14 +4652,15 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 
 ;; 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)
 
@@ -4725,15 +4669,17 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 ;; <URL:ftp://ftp.logic.ru/pub/logic/linux/cyr-asian/PT154>.  See also
 ;; <URL:http://lists.w3.org/Archives/Public/ietf-charsets/2002AprJun/0092.html,
 ;; which suggests it's used in an Asian Cyrillic context.
+;;;###autoload(autoload-coding-system 'pt154 '(require 'code-pages))
 (cp-make-coding-system
  pt154
  [?Җ ?Ғ ?Ӯ ?ғ ?„ ?… ?Ҷ ?Ү ?Ҳ ?ү ?Ҡ ?Ӣ ?Ң ?Қ ?Һ ?Ҹ ?җ ?‘ ?’ ?“ ?” ?• ?–
   ?— ?ҳ ?ҷ ?ҡ ?ӣ ?ң ?қ ?һ ?ҹ ?  ?Ў ?ў ?Ј ?Ө ?Ҙ ?Ұ ?§ ?Ё ?© ?Ә ?\« ?¬ ?ӯ
-  ?® ?Ҝ ?° ?ұ ?І ?і ?ҙ ?ө ?¶ ?· ?ё ?№ ?ә ?» ?ј ?Ҫ ?ҫ ?ҝ ?А ?Б ?В ?Г ?Д
+  ?® ?Ҝ ?° ?ұ ?І ?і ?ҙ ?ө ?¶ ?· ?ё ?№ ?ә ?\» ?ј ?Ҫ ?ҫ ?ҝ ?А ?Б ?В ?Г ?Д
   ?Е ?Ж ?З ?И ?Й ?К ?Л ?М ?Н ?О ?П ?Р ?С ?Т ?У ?Ф ?Х ?Ц ?Ч ?Ш ?Щ ?Ъ ?Ы
   ?Ь ?Э ?Ю ?Я ?а ?б ?в ?г ?д ?е ?ж ?з ?и ?й ?к ?л ?м ?н ?о ?п ?р ?с ?т
   ?у ?ф ?х ?ц ?ч ?ш ?щ ?ъ ?ы ?ь ?э ?ю ?я])
   
+;;;###autoload(autoload-coding-system 'iso-8859-11 '(require 'code-pages))
 (cp-make-coding-system
  iso-8859-11
  [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
@@ -4746,19 +4692,22 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?๐  ?๑  ?๒  ?๓  ?๔  ?๕  ?๖  ?๗  ?๘  ?๙  ?๚  ?๛   nil nil nil nil]
  "ISO-8859-11.  This is `thai-tis620' with the addition of no-break-space.")
 
-(dotimes (i 8)
+(dotimes (i 9)
   (let ((w (intern (format "windows-125%d" i)))
        (c (intern (format "cp125%d" i))))
-    (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)))
-
-;; Use Unicode font under Windows.  Jason Rumney fecit.
-(if (and (fboundp 'w32-add-charset-info)
-        (not (boundp 'w32-unicode-charset-defined)))
-    (w32-add-charset-info "iso10646-1" 'w32-charset-ansi t))
+    ;; 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-".
+    (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)
 
+;;; arch-tag: 8b6e3c73-b271-4198-866d-ea6d0ceff1b2
 ;;; code-pages.el ends here