2000-10-12 08:26:30 ShengHuo ZHU <zsh@cs.rochester.edu>
authorShengHuo ZHU <zsh@cs.rochester.edu>
Thu, 12 Oct 2000 11:34:05 +0000 (11:34 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Thu, 12 Oct 2000 11:34:05 +0000 (11:34 +0000)
* mm-util.el (mm-with-unibyte-current-buffer): Revert to old.
(mm-with-unibyte-current-buffer-mule4): New function.
* qp.el (quoted-printable-encode-region): Use it.
* rfc2047.el (rfc2047-decode): Ditto.
* webmail.el (webmail-init): Revert to use mm-disable-multibyte.

lisp/ChangeLog
lisp/mm-util.el
lisp/qp.el
lisp/rfc2047.el
lisp/webmail.el

index 4f25443..417f5ff 100644 (file)
@@ -1,3 +1,11 @@
+2000-10-12 08:26:30  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mm-util.el (mm-with-unibyte-current-buffer): Revert to old.
+       (mm-with-unibyte-current-buffer-mule4): New function.
+       * qp.el (quoted-printable-encode-region): Use it.
+       * rfc2047.el (rfc2047-decode): Ditto.
+       * webmail.el (webmail-init): Revert to use mm-disable-multibyte.
+
 2000-10-10 08:44:13  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * rfc2047.el (rfc2047-fold-region): "=?=" is not a break point.
index 8b9b8c8..d428d79 100644 (file)
@@ -356,8 +356,7 @@ See also `with-temp-file' and `with-output-to-string'."
   "Evaluate FORMS there like `progn' in current buffer."
   (let ((multibyte (make-symbol "multibyte")))
     `(if (or (featurep 'xemacs)
-            (not (fboundp 'set-buffer-multibyte))
-            (charsetp 'eight-bit-control)) ;; For Emacs Mule 4 only.
+            (not (fboundp 'set-buffer-multibyte)))
         (progn
           ,@forms)
        (let ((,multibyte (default-value 'enable-multibyte-characters)))
@@ -373,6 +372,28 @@ See also `with-temp-file' and `with-output-to-string'."
 (put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0)
 (put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body))
 
+(defmacro mm-with-unibyte-current-buffer-mule4 (&rest forms)
+  "Evaluate FORMS there like `progn' in current buffer.
+Mule4 only."
+  (let ((multibyte (make-symbol "multibyte")))
+    `(if (or (featurep 'xemacs)
+            (not (fboundp 'set-buffer-multibyte))
+            (charsetp 'eight-bit-control)) ;; For Emacs Mule 4 only.
+        (progn
+          ,@forms)
+       (let ((,multibyte (default-value 'enable-multibyte-characters)))
+        (unwind-protect
+            (let ((buffer-file-coding-system mm-binary-coding-system)
+                  (coding-system-for-read mm-binary-coding-system)
+                  (coding-system-for-write mm-binary-coding-system))
+              (set-buffer-multibyte nil)
+              (setq-default enable-multibyte-characters nil)
+              ,@forms)
+          (setq-default enable-multibyte-characters ,multibyte)
+          (set-buffer-multibyte ,multibyte))))))
+(put 'mm-with-unibyte-current-buffer-mule4 'lisp-indent-function 0)
+(put 'mm-with-unibyte-current-buffer-mule4 'edebug-form-spec '(body))
+
 (defmacro mm-with-unibyte (&rest forms)
   "Set default `enable-multibyte-characters' to `nil', eval the FORMS."
   (let ((multibyte (make-symbol "multibyte")))
index 24b0c70..79e4362 100644 (file)
@@ -94,7 +94,7 @@ encode lines starting with \"From\"."
   (save-excursion
     (save-restriction
       (narrow-to-region from to)
-      (mm-with-unibyte-current-buffer
+      (mm-with-unibyte-current-buffer-mule4
        ;;      (mm-encode-body)
        ;; Encode all the non-ascii and control characters.
        (goto-char (point-min))
index 717cf2b..d699a4b 100644 (file)
@@ -477,7 +477,7 @@ If your Emacs implementation can't decode CHARSET, it returns nil."
       (when (and (eq cs 'ascii)
                 mail-parse-charset)
        (setq cs mail-parse-charset))
-      (mm-with-unibyte-current-buffer 
+      (mm-with-unibyte-current-buffer-mule4
        ;; In Emacs Mule 4, decoding UTF-8 should be in unibyte mode.
        (mm-decode-coding-string
         (cond
index cd8d77b..d947ca0 100644 (file)
       (set-buffer webmail-buffer)
     (setq webmail-buffer
          (nnheader-set-temp-buffer " *webmail*"))
-    (mm-disable-multibyte-mule4)))
+    (mm-disable-multibyte)))
 
 (defvar url-package-name)
 (defvar url-package-version)