;; 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))
;; 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)