Commit ad142133 authored by Katsumi Yamaoka's avatar Katsumi Yamaoka
Browse files

Clarify the code a bit by renaming the variable with the url to `url'; Support...

Clarify the code a bit by renaming the variable with the url to `url'; Support cid: URLs/images; by Lars Magne Ingebrigtsen <larsi@gnus.org>.
parent c8977b2e
......@@ -10,6 +10,9 @@
2010-08-31 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-html.el: require mm-url.
(gnus-html-wash-tags): Clarify the code a bit by renaming the variable
with the url to `url'.
(gnus-html-wash-tags): Support cid: URLs/images.
2010-08-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
......
......@@ -276,7 +276,7 @@
(defun gnus-put-image (glyph &optional string category)
(let ((point (point)))
(insert-image glyph (or string " "))
(insert-image glyph (or string "*"))
(put-text-property point (point) 'gnus-image-category category)
(unless string
(put-text-property (1- (point)) (point)
......
......@@ -72,7 +72,7 @@
(gnus-html-wash-tags))))
(defun gnus-html-wash-tags ()
(let (tag parameters string start end images)
(let (tag parameters string start end images url)
(mm-url-decode-entities)
(goto-char (point-min))
(while (re-search-forward "<\\([^ />]+\\)\\([^>]*\\)>" nil t)
......@@ -89,31 +89,46 @@
;; Fetch and insert a picture.
((equal tag "img_alt")
(when (string-match "src=\"\\([^\"]+\\)" parameters)
(setq parameters (match-string 1 parameters))
(setq url (match-string 1 parameters))
(when (or (null mm-w3m-safe-url-regexp)
(string-match mm-w3m-safe-url-regexp parameters))
(let ((file (gnus-html-image-id parameters)))
(if (file-exists-p file)
;; It's already cached, so just insert it.
(when (gnus-html-put-image file (point))
;; Delete the ALT text.
(delete-region start end))
;; We don't have it, so schedule it for fetching
;; asynchronously.
(push (list parameters
(set-marker (make-marker) start)
(point-marker))
images))))))
(string-match mm-w3m-safe-url-regexp url))
(if (string-match "^cid:\\(.*\\)" url)
;; URLs with cid: have their content stashed in other
;; parts of the MIME structure, so just insert them
;; immediately.
(let ((handle (mm-get-content-id
(setq url (match-string 1 url))))
image)
(when handle
(mm-with-part handle
(setq image (gnus-create-image (buffer-string)
nil t))))
(when image
(delete-region start end)
(gnus-put-image image)))
;; Normal, external URL.
(let ((file (gnus-html-image-id url)))
(if (file-exists-p file)
;; It's already cached, so just insert it.
(when (gnus-html-put-image file (point))
;; Delete the ALT text.
(delete-region start end))
;; We don't have it, so schedule it for fetching
;; asynchronously.
(push (list url
(set-marker (make-marker) start)
(point-marker))
images)))))))
;; Add a link.
((equal tag "a")
(when (string-match "href=\"\\([^\"]+\\)" parameters)
(setq parameters (match-string 1 parameters))
(setq url (match-string 1 parameters))
(gnus-article-add-button start end
'browse-url parameters
parameters)
'browse-url url
url)
(let ((overlay (gnus-make-overlay start end)))
(gnus-overlay-put overlay 'evaporate t)
(gnus-overlay-put overlay 'gnus-button-url parameters)
(gnus-overlay-put overlay 'gnus-button-url url)
(when gnus-article-mouse-face
(gnus-overlay-put overlay 'mouse-face gnus-article-mouse-face)))))
;; Whatever. Just ignore the tag.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment