aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatsumi Yamaoka <[email protected]>2013-11-27 06:39:37 +0000
committerKatsumi Yamaoka <[email protected]>2013-11-27 06:39:37 +0000
commit0717822943efa5013dffa1494f528e23d102ae72 (patch)
tree286a1a348b9bef33ed04e561d2dd7ea1c6b8088d
parent52d6635f8170ad0f5269afb47dc41d5527fbe65c (diff)
[Gnus] Allow overriding charset in some decoding functions
-rw-r--r--lisp/gnus/ChangeLog8
-rw-r--r--lisp/gnus/gnus-art.el8
-rw-r--r--lisp/gnus/gnus-html.el3
-rw-r--r--lisp/gnus/mm-view.el9
-rw-r--r--lisp/gnus/rfc2231.el3
5 files changed, 22 insertions, 9 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index eee75f7194..bea916187b 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,5 +1,13 @@
2013-11-27 Katsumi Yamaoka <[email protected]>
+ * gnus-art.el (article-de-quoted-unreadable)
+ (article-de-base64-unreadable, gnus-mime-copy-part)
+ * gnus-html.el (gnus-article-html)
+ * mm-view.el (mm-inline-text-html-render-with-w3)
+ (mm-inline-text-html-render-with-w3m-standalone)
+ * rfc2231.el (rfc2231-decode-encoded-string):
+ Allow overriding charset by mm-charset-override-alist.
+
* gnus-art.el (gnus-article-browse-html-parts):
Replace LWSPs with `&nbsp;'s in header.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index a902cb9024..9eac2c428e 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2665,7 +2665,7 @@ If READ-CHARSET, ask for a coding system."
(string-match "quoted-printable" type))))
(article-goto-body)
(quoted-printable-decode-region
- (point) (point-max) (mm-charset-to-coding-system charset))))))
+ (point) (point-max) (mm-charset-to-coding-system charset nil t))))))
(defun article-de-base64-unreadable (&optional force read-charset)
"Translate a base64 article.
@@ -2696,7 +2696,8 @@ If READ-CHARSET, ask for a coding system."
(narrow-to-region (point) (point-max))
(base64-decode-region (point-min) (point-max))
(mm-decode-coding-region
- (point-min) (point-max) (mm-charset-to-coding-system charset)))))))
+ (point-min) (point-max)
+ (mm-charset-to-coding-system charset nil t)))))))
(eval-when-compile
(require 'rfc1843))
@@ -5247,7 +5248,8 @@ are decompressed."
(switch-to-buffer (generate-new-buffer filename))
(if (or coding-system
(and charset
- (setq coding-system (mm-charset-to-coding-system charset))
+ (setq coding-system (mm-charset-to-coding-system
+ charset nil t))
(not (eq coding-system 'ascii))))
(progn
(mm-enable-multibyte)
diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el
index 2700af3d00..36c1677be0 100644
--- a/lisp/gnus/gnus-html.el
+++ b/lisp/gnus/gnus-html.el
@@ -143,7 +143,8 @@ CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
(charset (mail-content-type-get (mm-handle-type handle)
'charset)))
(when (and charset
- (setq charset (mm-charset-to-coding-system charset))
+ (setq charset (mm-charset-to-coding-system
+ charset nil t))
(not (eq charset 'ascii)))
(insert (prog1
(mm-decode-coding-string (buffer-string) charset)
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 9512a411d8..48124f17ef 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -175,7 +175,7 @@
(match-end 2))))
(if (fboundp 'w3-coding-system-for-mime-charset)
(w3-coding-system-for-mime-charset bsubstr)
- (mm-charset-to-coding-system bsubstr))))
+ (mm-charset-to-coding-system bsubstr nil t))))
(delete-region (point-min) (point-max))
(insert (mm-decode-string text charset))))
(save-window-excursion
@@ -343,9 +343,10 @@
'charset)
(symbol-name mail-parse-charset)))
cs)
- (unless (and charset
- (setq cs (mm-charset-to-coding-system charset))
- (not (eq cs 'ascii)))
+ (if (and charset
+ (setq cs (mm-charset-to-coding-system charset nil t))
+ (not (eq cs 'ascii)))
+ (setq charset (format "%s" (mm-coding-system-to-mime-charset cs)))
;; The default.
(setq charset "iso-8859-1"
cs 'iso-8859-1))
diff --git a/lisp/gnus/rfc2231.el b/lisp/gnus/rfc2231.el
index e8d7075bc6..4baacde8ea 100644
--- a/lisp/gnus/rfc2231.el
+++ b/lisp/gnus/rfc2231.el
@@ -215,7 +215,8 @@ These look like:
\"''This%20is%20%2A%2A%2Afun%2A%2A%2A\", or
\"This is ***fun***\"."
(string-match "\\`\\(?:\\([^']+\\)?'\\([^']+\\)?'\\)?\\(.+\\)" string)
- (let ((coding-system (mm-charset-to-coding-system (match-string 1 string)))
+ (let ((coding-system (mm-charset-to-coding-system
+ (match-string 1 string) nil t))
;;(language (match-string 2 string))
(value (match-string 3 string)))
(mm-with-unibyte-buffer