2000-10-05 09:41:33 ShengHuo ZHU <zsh@cs.rochester.edu>
authorShengHuo ZHU <zsh@cs.rochester.edu>
Thu, 5 Oct 2000 13:31:04 +0000 (13:31 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Thu, 5 Oct 2000 13:31:04 +0000 (13:31 +0000)
* mm-util.el (mm-multibyte-p): In XEmacs, it is (feature 'mule).
(mm-find-charset-region): Merge conditions, delete ascii.
(mm-charset-after): Rewrite.
* mm-bodies.el (mm-encode-body): Use it.

lisp/ChangeLog
lisp/mm-bodies.el
lisp/mm-util.el

index 9b6658b..d4d291b 100644 (file)
@@ -1,3 +1,10 @@
+2000-10-05 09:41:33  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mm-util.el (mm-multibyte-p): In XEmacs, it is (feature 'mule).
+       (mm-find-charset-region): Merge conditions, delete ascii.
+       (mm-charset-after): Rewrite.
+       * mm-bodies.el (mm-encode-body): Use it.
+
 2000-10-05 09:04:32  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * webmail.el (webmail-hotmail-list): Fix.
index f90f74c..5b8874c 100644 (file)
@@ -58,7 +58,7 @@ If there is more than one non-ASCII MULE charset, then list of found
 MULE charsets are returned.
 If successful, the MIME charset is returned.
 If no encoding was done, nil is returned."
-  (if (not (featurep 'mule))
+  (if (not (mm-multibyte-p))
       ;; In the non-Mule case, we search for non-ASCII chars and
       ;; return the value of `mail-parse-charset' if any are found.
       (save-excursion
index 296098e..35dda1f 100644 (file)
@@ -237,30 +237,32 @@ used as the line break code type of the coding system."
 If POS is nil, it defauls to the current point.
 If POS is out of range, the value is nil.
 If the charset is `composition', return the actual one."
-  (let ((charset (cond 
-                 ((fboundp 'charset-after)
-                  (charset-after pos))
-                 ((fboundp 'char-charset)
-                  (char-charset (char-after pos)))
-                 ((< (mm-char-int (char-after pos)) 128)
-                  'ascii)
-                 (mail-parse-mule-charset ;; cached mule-charset
-                  mail-parse-mule-charset)
-                 ((boundp 'current-language-environment)
-                  (let ((entry (assoc current-language-environment 
-                                      language-info-alist)))
-                    (setq mail-parse-mule-charset
-                          (or (car (last (assq 'charset entry)))
-                              'latin-iso8859-1))))
-                 (t                       ;; figure out the charset
-                  (setq mail-parse-mule-charset
-                        (or (car (last (assq mail-parse-charset
-                                             mm-mime-mule-charset-alist)))
-                            'latin-iso8859-1))))))
-    (if (eq charset 'composition)
-       (let ((p (or pos (point))))
-         (cadr (find-charset-region p (1+ p))))
-      charset)))
+  (let ((char (char-after pos)) charset)
+    (if (< (mm-char-int char) 128)
+       (setq charset 'ascii)
+      ;; charset-after is fake in some Emacsen.
+      (setq charset (and (fboundp 'char-charset) (char-charset char)))
+      (if (eq charset 'composition)
+         (let ((p (or pos (point))))
+           (cadr (find-charset-region p (1+ p))))
+       (if (and charset (not (eq charset 'ascii)))
+           charset
+         (or
+          mail-parse-mule-charset ;; cached mule-charset
+          (progn
+            (setq mail-parse-mule-charset
+                  (and (boundp 'current-language-environment)
+                     (car (last 
+                           (assq 'charset 
+                                 (assoc current-language-environment 
+                                        language-info-alist))))))
+            (if (or (not mail-parse-mule-charset)
+                    (eq mail-parse-mule-charset 'ascii))
+                (setq mail-parse-mule-charset
+                      (or (car (last (assq mail-parse-charset
+                                           mm-mime-mule-charset-alist)))
+                          'latin-iso8859-1)))
+            mail-parse-mule-charset)))))))
 
 (defun mm-mime-charset (charset)
   "Return the MIME charset corresponding to the MULE CHARSET."
@@ -302,9 +304,9 @@ If the charset is `composition', return the actual one."
 
 (defsubst mm-multibyte-p ()
   "Say whether multibyte is enabled."
-  (or (featurep 'xemacs)
-      (and (boundp 'enable-multibyte-characters)
-          enable-multibyte-characters)))
+  (if (boundp 'enable-multibyte-characters)
+      enable-multibyte-characters
+    (featurep 'mule)))
 
 (defmacro mm-with-unibyte-buffer (&rest forms)
   "Create a temporary buffer, and evaluate FORMS there like `progn'.
@@ -375,7 +377,8 @@ See also `with-temp-file' and `with-output-to-string'."
         (fboundp 'find-charset-region))
     ;; Remove composition since the base charsets have been included.
     (delq 'composition (find-charset-region b e)))
-   ((not (boundp 'current-language-environment))
+   (t
+    ;; We are in a unibyte buffer or XEmacs non-mule, so we futz around a bit.
     (save-excursion
       (save-restriction
        (narrow-to-region b e)
@@ -383,24 +386,18 @@ See also `with-temp-file' and `with-output-to-string'."
        (skip-chars-forward "\0-\177")
        (if (eobp)
            '(ascii)
-         (delq nil (list 'ascii 
-                         (or (car (last (assq mail-parse-charset
-                                              mm-mime-mule-charset-alist)))
-                             'latin-iso8859-1)))))))
-   (t
-    ;; We are in a unibyte buffer, so we futz around a bit.
-    (save-excursion
-      (save-restriction
-       (narrow-to-region b e)
-       (goto-char (point-min))
-       (let ((entry (assoc current-language-environment 
-                           language-info-alist)))
-         (skip-chars-forward "\0-\177")
-         (if (eobp)
-             '(ascii)
-           (delq nil (list 'ascii 
-                           (or (car (last (assq 'charset entry)))
-                               'latin-iso8859-1))))))))))
+         (let (charset)
+           (setq charset
+                 (and (boundp 'current-language-environment)
+                      (car (last (assq 'charset 
+                                       (assoc current-language-environment 
+                                              language-info-alist))))))
+           (if (eq charset 'ascii) (setq charset nil))
+           (or charset
+               (setq charset
+                     (car (last (assq mail-parse-charset
+                                      mm-mime-mule-charset-alist)))))
+           (list 'ascii (or charset 'latin-iso8859-1)))))))))
 
 (if (fboundp 'shell-quote-argument)
     (defalias 'mm-quote-arg 'shell-quote-argument)