aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatsumi Yamaoka <[email protected]>2008-09-09 22:48:45 +0000
committerKatsumi Yamaoka <[email protected]>2008-09-09 22:48:45 +0000
commitc0ccb0d665e74d401e057f501962e6a017d84469 (patch)
tree9cdfb06e2ca0973aca3117b538dc9f5f14d4d7b9
parentf1ba6ccdf54c37205c0e5e332c55a86b7a1f38c8 (diff)
* 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.
-rw-r--r--lisp/gnus/ChangeLog6
-rw-r--r--lisp/gnus/gnus-art.el26
2 files changed, 20 insertions, 12 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 7fdda1bceb..fa7d7926a3 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,5 +1,11 @@
2008-09-09 Katsumi Yamaoka <[email protected]>
+ * 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.
+
+2008-09-09 Katsumi Yamaoka <[email protected]>
+
* gnus-art.el (gnus-mime-strip-charset-parameters): Remove.
(gnus-mime-set-charset-parameters): New function.
(gnus-mime-view-part-as-charset): Use it to correctly display part
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 1438842a01..476f294515 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -5138,11 +5138,14 @@ Compressed files like .gz and .bz2 are decompressed."
(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 @@ The value of `gnus-newsgroup-charset' is used as a charset."
(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 @@ specified charset."
(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)))