diff lisp/gnus/gnus-art.el @ 98113:95e740c93248

* gnus-art.el (gnus-mime-set-charset-parameters): Add new argument `charset'; fix name of function called recursively. (gnus-mime-view-part-as-charset): Don't bind gnus-newsgroup-charset.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Tue, 09 Sep 2008 22:48:45 +0000
parents 335a46d662d1
children 39408ed11da9
line wrap: on
line diff
--- a/lisp/gnus/gnus-art.el	Tue Sep 09 18:16:48 2008 +0000
+++ b/lisp/gnus/gnus-art.el	Tue Sep 09 22:48:45 2008 +0000
@@ -5138,11 +5138,14 @@
 	   (mm-string-to-multibyte contents)))
 	(goto-char b)))))
 
-(defun gnus-mime-set-charset-parameters (handle)
-  "Set charset to parameters in HANDLE.
-The value of `gnus-newsgroup-charset' is used as a charset."
+(defun gnus-mime-set-charset-parameters (handle charset)
+  "Set CHARSET to parameters in HANDLE.
+CHARSET may either be a string or a symbol."
+  (unless (stringp charset)
+    (setq charset (symbol-name charset)))
   (if (stringp (car handle))
-      (mapc #'gnus-mime-strip-charset-parameters (cdr handle))
+      (dolist (h (cdr handle))
+	(gnus-mime-set-charset-parameters h charset))
     (let* ((type (mm-handle-type (if (equal (mm-handle-media-type handle)
 					    "message/external-body")
 				     (progn
@@ -5150,11 +5153,10 @@
 					 (mm-extern-cache-contents handle))
 				       (mm-handle-cache handle))
 				   handle)))
-	   (charset (assq 'charset (cdr type))))
-      (if charset
-	  (setcdr charset (symbol-name gnus-newsgroup-charset))
-	(setcdr type (cons (cons 'charset (symbol-name gnus-newsgroup-charset))
-			   (cdr type)))))))
+	   (param (assq 'charset (cdr type))))
+      (if param
+	  (setcdr param charset)
+	(setcdr type (cons (cons 'charset charset) (cdr type)))))))
 
 (defun gnus-mime-view-part-as-charset (&optional handle arg)
   "Insert the MIME part under point into the current buffer using the
@@ -5164,18 +5166,18 @@
   (let ((handle (or handle (get-text-property (point) 'gnus-data)))
 	(fun (get-text-property (point) 'gnus-callback))
 	(gnus-newsgroup-ignored-charsets 'gnus-all)
-	gnus-newsgroup-charset form preferred parts)
+	charset form preferred parts)
     (when handle
       (when (prog1
 		(and fun
-		     (setq gnus-newsgroup-charset
+		     (setq charset
 			   (or (cdr (assq
 				     arg
 				     gnus-summary-show-article-charset-alist))
 			       (mm-read-coding-system "Charset: "))))
 	      (if (mm-handle-undisplayer handle)
 		  (mm-remove-part handle)))
-	(gnus-mime-set-charset-parameters handle)
+	(gnus-mime-set-charset-parameters handle charset)
 	(when (and (consp (setq form (cdr-safe fun)))
 		   (setq form (ignore-errors
 				(assq 'gnus-mime-display-alternative form)))