From: Katsumi Yamaoka Date: Tue, 28 Aug 2012 09:40:11 +0000 (+0000) Subject: gnus-sum.el (gnus-summary-enter-digest-group): Work for encoding and charset X-Git-Tag: emacs-24.2.90~490 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=cc319c03f148c2c004ba390d85e9a09f452d69c1;p=emacs.git gnus-sum.el (gnus-summary-enter-digest-group): Work for encoding and charset --- diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 2a47b049c9b..4b56d351ac2 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,9 @@ +2012-08-28 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-enter-digest-group): Decode content + transfer encoding first; bind gnus-newsgroup-charset to the charset + that the article specifies (Bug#12209). + 2012-08-22 Katsumi Yamaoka * gnus-cus.el (gnus-group-customize): Decode values posting-style holds. diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 06f17bcf646..b44b953bec6 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -9137,7 +9137,7 @@ To control what happens when you exit the group, see the (list (cons 'save-article-group ogroup)))) (case-fold-search t) (buf (current-buffer)) - dig to-address) + dig to-address charset) (with-current-buffer gnus-original-article-buffer ;; Have the digest group inherit the main mail address of ;; the parent article. @@ -9150,16 +9150,32 @@ To control what happens when you exit the group, see the to-address)))))) (setq dig (nnheader-set-temp-buffer " *gnus digest buffer*")) (insert-buffer-substring gnus-original-article-buffer) - ;; Remove lines that may lead nndoc to misinterpret the - ;; document type. (narrow-to-region (goto-char (point-min)) (or (search-forward "\n\n" nil t) (point))) + ;; Remove lines that may lead nndoc to misinterpret the + ;; document type. (goto-char (point-min)) (delete-matching-lines "^Path:\\|^From ") + ;; Parse charset, and decode content transfer encoding. + (setq charset (mail-content-type-get + (mail-header-parse-content-type + (or (gnus-fetch-field "content-type") "")) + 'charset)) + (let ((encoding (gnus-fetch-field "content-transfer-encoding"))) + (when encoding + (message-remove-header "content-transfer-encoding") + (goto-char (point-max)) + (widen) + (narrow-to-region (point) (point-max)) + (mm-decode-content-transfer-encoding + (intern (downcase (mail-header-strip encoding)))))) (widen)) (unwind-protect - (if (let ((gnus-newsgroup-ephemeral-charset gnus-newsgroup-charset) + (if (let ((gnus-newsgroup-ephemeral-charset + (if charset + (intern (downcase (gnus-strip-whitespace charset))) + gnus-newsgroup-charset)) (gnus-newsgroup-ephemeral-ignored-charsets gnus-newsgroup-ignored-charsets)) (gnus-group-read-ephemeral-group