Mercurial > emacs
changeset 107578:3ca642fe505f
2010-03-30 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (gnus-article-browse-delete-temp-files): Delete
directories as well.
(gnus-article-browse-html-parts): Work for images that do not specify
file names; delete temp directory when quitting; insert header at the
right place; use file: scheme for image files.
2010-03-30 Eric Schulte <schulte.eric@gmail.com>
* gnus-art.el (gnus-article-browse-html-save-cid-image): New function.
(gnus-article-browse-html-parts): Use it to make temporary cid image
files in addition to html file so that browser may display them.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Tue, 30 Mar 2010 04:03:00 +0000 |
parents | df4f6d6be3b3 |
children | 52cc880eaf3a 7e2e7d245782 |
files | lisp/gnus/ChangeLog lisp/gnus/gnus-art.el |
diffstat | 2 files changed, 59 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog Tue Mar 30 04:00:46 2010 +0000 +++ b/lisp/gnus/ChangeLog Tue Mar 30 04:03:00 2010 +0000 @@ -1,3 +1,17 @@ +2010-03-30 Katsumi Yamaoka <yamaoka@jpl.org> + + * gnus-art.el (gnus-article-browse-delete-temp-files): Delete + directories as well. + (gnus-article-browse-html-parts): Work for images that do not specify + file names; delete temp directory when quitting; insert header at the + right place; use file: scheme for image files. + +2010-03-30 Eric Schulte <schulte.eric@gmail.com> + + * gnus-art.el (gnus-article-browse-html-save-cid-image): New function. + (gnus-article-browse-html-parts): Use it to make temporary cid image + files in addition to html file so that browser may display them. + 2010-03-29 Katsumi Yamaoka <yamaoka@jpl.org> * mm-decode.el (mm-add-meta-html-tag): Fix regexp matching meta tag.
--- a/lisp/gnus/gnus-art.el Tue Mar 30 04:00:46 2010 +0000 +++ b/lisp/gnus/gnus-art.el Tue Mar 30 04:03:00 2010 +0000 @@ -2819,12 +2819,43 @@ ;; `how' is neither `nil', `ask' nor `t' (i.e. `file'): (gnus-y-or-n-p (format "Delete temporary HTML file `%s'? " file)))) - (delete-file file))) + (if (file-directory-p file) + (gnus-delete-directory file) + (delete-file file)))) ;; Also remove file from the list when not deleted or if file doesn't ;; exist anymore. (setq gnus-article-browse-html-temp-list nil)) gnus-article-browse-html-temp-list) +(defun gnus-article-browse-html-save-cid-image (cid dir) + "Save CID contents to a file in DIR. Return file name." + (save-match-data + (gnus-with-article-buffer + (let (cid-handle cid-tmp-file cid-type) + (mapc + (lambda (handle) + (when (and (listp handle) + (stringp (car (last handle))) + (string= (format "<%s>" cid) + (car (last handle)))) + (setq cid-handle handle) + (setq cid-tmp-file + (expand-file-name + (or (mail-content-type-get + (mm-handle-disposition handle) 'filename) + (mail-content-type-get + (setq cid-type (mm-handle-type handle)) 'name) + (concat (make-temp-name "cid") + (or (car (rassoc (car cid-type) + mailcap-mime-extensions)) + ""))) + dir)))) + gnus-article-mime-handles) + (when (and cid-handle cid-tmp-file) + (mm-save-part-to-file cid-handle + cid-tmp-file) + (concat "file://" cid-tmp-file)))))) + (defun gnus-article-browse-html-parts (list &optional header) "View all \"text/html\" parts from LIST. Recurse into multiparts. The optional HEADER that should be a decoded @@ -2862,7 +2893,7 @@ ;; Add a meta html tag to specify charset and a header. (cond (header - (let (title eheader body hcharset coding) + (let (title eheader body hcharset coding cid-image-dir) (with-temp-buffer (mm-enable-multibyte) (setq case-fold-search t) @@ -2943,6 +2974,18 @@ (re-search-forward "</head\\(?:\\s-+[^>]+\\|\\s-*\\)>\\s-*" nil t)) (insert eheader) + ;; resolve cid images + (while (re-search-forward + "<img src=\"\\(cid:\\([^\"]+\\)\\)\"" + nil t) + (unless cid-image-dir + (setq cid-image-dir (make-temp-file "cid" t)) + (add-to-list 'gnus-article-browse-html-temp-list + cid-image-dir)) + (replace-match + (gnus-article-browse-html-save-cid-image + (match-string 2) cid-image-dir) + nil nil nil 1)) (mm-write-region (point-min) (point-max) tmp-file nil nil nil 'binary t)))) (charset