From: Katsumi Yamaoka Date: Tue, 30 Mar 2010 04:44:38 +0000 (+0000) Subject: 2010-03-30 Martin Stjernholm X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~636 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=82fc79808b345b43efc20c064baec63cc14df8a5;p=emacs.git 2010-03-30 Martin Stjernholm * mm-decode.el (mm-add-meta-html-tag): Added option to override the charset. * gnus-art.el (gnus-article-browse-html-parts): Force the correct charset into the tag when the article is encoded to utf-8. --- diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 5fddceec0fb..66a358af534 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,11 @@ +2010-03-30 Martin Stjernholm + + * mm-decode.el (mm-add-meta-html-tag): Added option to override the + charset. + + * gnus-art.el (gnus-article-browse-html-parts): Force the correct + charset into the tag when the article is encoded to utf-8. + 2010-03-30 Katsumi Yamaoka * gnus-art.el (gnus-article-browse-delete-temp-files): Delete diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 9288101759f..086eb47d76c 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -2893,7 +2893,8 @@ message header will be added to the bodies of the \"text/html\" parts." ;; Add a meta html tag to specify charset and a header. (cond (header - (let (title eheader body hcharset coding cid-image-dir) + (let (title eheader body hcharset coding force-charset + cid-image-dir) (with-temp-buffer (mm-enable-multibyte) (setq case-fold-search t) @@ -2917,7 +2918,8 @@ message header will be added to the bodies of the \"text/html\" parts." title (when title (mm-encode-coding-string title charset)) body (mm-encode-coding-string (mm-get-part handle) - charset)) + charset) + force-charset t) (setq hcharset (mm-find-mime-charset-region (point-min) (point-max))) (cond ((= (length hcharset) 1) @@ -2948,7 +2950,8 @@ message header will be added to the bodies of the \"text/html\" parts." body (mm-encode-coding-string (mm-decode-coding-string (mm-get-part handle) body) - charset)))) + charset) + force-charset t))) (setq charset hcharset eheader (mm-encode-coding-string (buffer-string) coding) @@ -2962,7 +2965,7 @@ message header will be added to the bodies of the \"text/html\" parts." (mm-disable-multibyte) (insert body) (when charset - (mm-add-meta-html-tag handle charset)) + (mm-add-meta-html-tag handle charset force-charset)) (when title (goto-char (point-min)) (unless (search-forward "" nil t) diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 58ba3ec7413..171afac31ff 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1258,11 +1258,11 @@ PROMPT overrides the default one used to ask user for a file name." (mm-save-part-to-file handle file) file)))) -(defun mm-add-meta-html-tag (handle &optional charset) +(defun mm-add-meta-html-tag (handle &optional charset force-charset) "Add meta html tag to specify CHARSET of HANDLE in the current buffer. CHARSET defaults to the one HANDLE specifies. Existing meta tag that -specifies charset will not be modified. Return t if meta tag is added -or replaced." +specifies charset will not be modified unless FORCE-CHARSET is non-nil. +Return t if meta tag is added or replaced." (when (equal (mm-handle-media-type handle) "text/html") (when (or charset (setq charset (mail-content-type-get (mm-handle-type handle) @@ -1274,7 +1274,8 @@ or replaced." (if (re-search-forward "\ <meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']\ text/\\(\\sw+\\)\\(?:\;\\s-*charset=\\(.+\\)\\)?[\"'][^>]*>" nil t) - (if (and (match-beginning 2) + (if (and (not force-charset) + (match-beginning 2) (string-match "\\`html\\'" (match-string 1))) ;; Don't modify existing meta tag. nil