gnus-sum.el (gnus-summary-enter-digest-group): Work for encoding and charset

This commit is contained in:
Katsumi Yamaoka 2012-08-28 09:40:11 +00:00
parent d44688e450
commit cc319c03f1
2 changed files with 26 additions and 4 deletions

View file

@ -1,3 +1,9 @@
2012-08-28 Katsumi Yamaoka <yamaoka@jpl.org>
* 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 <yamaoka@jpl.org>
* gnus-cus.el (gnus-group-customize): Decode values posting-style holds.

View file

@ -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