]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't register a coding system into
authorKenichi Handa <handa@m17n.org>
Fri, 27 May 2005 11:20:16 +0000 (11:20 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 27 May 2005 11:20:16 +0000 (11:20 +0000)
non-iso-charset-alist more than once.
(cp-make-coding-system): Likewise.

lisp/international/code-pages.el

index 73c953a2fe4a6c4bbb6a1f855b2b75ab570ddce7..c70388ba4c9d3d3d140e7a5aa6aa762ff462bc03 100644 (file)
@@ -193,15 +193,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))
 
@@ -4502,11 +4505,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)