Importing pgnus-0.39
[elisp/gnus.git-] / lisp / mm-util.el
index a24d3a8..79454d0 100644 (file)
@@ -168,9 +168,15 @@ used as the line break code type of the coding system."
 
 (defsubst mm-enable-multibyte ()
   "Enable multibyte in the current buffer."
-  (when (fboundp 'set-buffer-multibyte)
+  (when (and (fboundp 'set-buffer-multibyte)
+            (default-value enable-multibyte-characters))
     (set-buffer-multibyte t)))
 
+(defsubst mm-disable-multibyte ()
+  "Disable multibyte in the current buffer."
+  (when (fboundp 'set-buffer-multibyte)
+    (set-buffer-multibyte nil)))
+
 (defun mm-mime-charset (charset b e)
   (if (fboundp 'coding-system-get)
       (or
@@ -201,20 +207,21 @@ See also `with-temp-file' and `with-output-to-string'."
         (with-temp-buffer ,@forms)
        (let ((,multibyte (default-value enable-multibyte-characters))
             ,temp-buffer)
-        (setq-default enable-multibyte-characters nil)
-        (setq ,temp-buffer
-              (get-buffer-create (generate-new-buffer-name " *temp*")))
         (unwind-protect
-            (with-current-buffer ,temp-buffer
-              (let (buffer-file-coding-system)
-                ,@forms))
-          (and (buffer-name ,temp-buffer)
-               (kill-buffer ,temp-buffer))
+            (progn
+              (setq-default enable-multibyte-characters nil)
+              (setq ,temp-buffer
+                    (get-buffer-create (generate-new-buffer-name " *temp*")))
+              (unwind-protect
+                  (with-current-buffer ,temp-buffer
+                    (let (buffer-file-coding-system)
+                      ,@forms))
+                (and (buffer-name ,temp-buffer)
+                     (kill-buffer ,temp-buffer))))
           (setq-default enable-multibyte-characters ,multibyte))))))
 (put 'mm-with-unibyte-buffer 'lisp-indent-function 0)
 (put 'mm-with-unibyte-buffer 'edebug-form-spec '(body))
 
-
 (provide 'mm-util)
 
 ;;; mm-util.el ends here