(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)
;; 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.