2003-03-20 Mark A. Hershberger <mah@everybody.org>
[gnus] / lisp / mm-util.el
index 9c9ba85..a705b82 100644 (file)
@@ -1,5 +1,6 @@
 ;;; mm-util.el --- Utility functions for Mule and low level things
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+;;   Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;     MORIOKA Tomohiko <morioka@jaist.ac.jp>
@@ -297,9 +298,12 @@ mail with multiple parts is preferred to sending a Unicode one.")
 
 (defun mm-mule-charset-to-mime-charset (charset)
   "Return the MIME charset corresponding to the given Mule CHARSET."
-  (if (fboundp 'find-coding-systems-for-charsets)
+  (if (and (fboundp 'find-coding-systems-for-charsets)
+          (fboundp 'sort-coding-systems))
       (let (mime)
-       (dolist (cs (find-coding-systems-for-charsets (list charset)))
+       (dolist (cs (sort-coding-systems
+                    (copy-sequence
+                     (find-coding-systems-for-charsets (list charset)))))
          (unless mime
            (when cs
              (setq mime (coding-system-get cs 'mime-charset)))))
@@ -460,7 +464,7 @@ If the charset is `composition', return the actual one."
     (mm-mule-charset-to-mime-charset charset)))
 
 (defun mm-delete-duplicates (list)
-  "Simple  substitute for CL `delete-duplicates', testing with `equal'."
+  "Simple substitute for CL `delete-duplicates', testing with `equal'."
   (let (result head)
     (while list
       (setq head (car list))
@@ -493,8 +497,8 @@ If the charset is `composition', return the actual one."
              (forward-char))
             (t
              (insert-before-markers (prog1 (+ c (car (cdr item)))
-                                      (delete-char 1))))
-           (skip-chars-forward "\0-\177"))))
+                                      (delete-char 1)))))
+           (skip-chars-forward "\0-\177")))
        (not inconvertible))))
 
 (defun mm-sort-coding-systems-predicate (a b)
@@ -532,7 +536,8 @@ charset, and a longer list means no appropriate charset."
               (mapcar 'mm-mime-charset
                       (delq 'ascii
                             (mm-find-charset-region b e))))))
-    (if (and (memq 'iso-8859-15 charsets)
+    (if (and (> (length charsets) 1)
+            (memq 'iso-8859-15 charsets)
             (memq 'iso-8859-15 hack-charsets)
             (save-excursion (mm-iso-8859-x-to-15-region b e)))
        (mapcar (lambda (x) (setq charsets (delq (car x) charsets)))
@@ -691,7 +696,7 @@ START, END and FILENAME.  START and END are buffer positions
 saying what text to write.
 Optional fourth argument specifies the coding system to use when
 encoding the file.
-If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers."
+If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'."
   (let ((coding-system-for-write
         (or codesys mm-text-coding-system-for-write
             mm-text-coding-system))
@@ -709,7 +714,7 @@ If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers."
                              coding-system inhibit)
 
   "Like `write-region'.
-If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers."
+If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'."
   (let ((coding-system-for-write
         (or coding-system mm-text-coding-system-for-write
             mm-text-coding-system))
@@ -735,7 +740,7 @@ If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers."
 
 (if (fboundp 'detect-coding-region)
     (defun mm-detect-coding-region (start end)
-      "Like 'detect-coding-region' except returning the best one."
+      "Like `detect-coding-region' except returning the best one."
       (let ((coding-systems
             (detect-coding-region (point) (point-max))))
        (or (car-safe coding-systems)