X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fgnus-html.el;h=a5625dfed80048e2532c7fa044e747d2c3bcb9c1;hb=d35146fa43e9e2d8d346073c3c0692162abf4759;hp=deeb3565bcf69d05cefe0b244d08fc06efd07cd4;hpb=bc903ffc55954a592cdd7340ce5b6f12815ff99d;p=gnus diff --git a/lisp/gnus-html.el b/lisp/gnus-html.el index deeb3565b..a5625dfed 100644 --- a/lisp/gnus-html.el +++ b/lisp/gnus-html.el @@ -1,6 +1,6 @@ ;;; gnus-html.el --- Render HTML in a buffer. -;; Copyright (C) 2010 Free Software Foundation, Inc. +;; Copyright (C) 2010-2013 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: html, web @@ -38,13 +38,17 @@ (require 'url-cache) (require 'xml) (require 'browse-url) +(require 'mm-util) (eval-and-compile (unless (featurep 'xemacs) (require 'help-fns))) (defcustom gnus-html-image-cache-ttl (days-to-time 7) "Time used to determine if we should use images from the cache." :version "24.1" :group 'gnus-art - :type 'integer) + ;; FIXME hardly the friendliest type. The allowed value is actually + ;; any time value, but we are assuming no-one cares about USEC and + ;; PSEC here. It would be better to eg make it a number of minutes. + :type '(list integer integer)) (defcustom gnus-html-image-automatic-caching t "Whether automatically cache retrieve images." @@ -215,16 +219,16 @@ CHARS is a regexp-like character alternative (e.g., \"[)$]\")." (mm-with-part handle (buffer-string)) nil t)))) (if image - (progn - (gnus-put-image - (gnus-rescale-image - image (gnus-html-maximum-image-size)) - (gnus-string-or (prog1 - (buffer-substring start end) - (delete-region start end)) - "*") - 'cid) - (gnus-add-image 'cid image)) + (gnus-add-image + 'cid + (gnus-put-image + (gnus-rescale-image + image (gnus-html-maximum-image-size)) + (gnus-string-or (prog1 + (buffer-substring start end) + (delete-region start end)) + "*") + 'cid)) (widget-convert-button 'link start end :action 'gnus-html-insert-image @@ -386,29 +390,28 @@ Use ALT-TEXT for the image string." "Retrieve IMAGE, and place it into BUFFER on arrival." (gnus-message 8 "gnus-html-schedule-image-fetching: buffer %s, image %s" buffer image) - (let ((args (list (car image) - 'gnus-html-image-fetched - (list buffer image)))) - (when (> (length (if (featurep 'xemacs) - (cdr (split-string (function-arglist 'url-retrieve))) - (help-function-arglist 'url-retrieve))) - 4) - (setq args (nconc args (list t)))) + (if (fboundp 'url-queue-retrieve) + (url-queue-retrieve (car image) + 'gnus-html-image-fetched + (list buffer image) t t) (ignore-errors - (push (apply #'url-retrieve args) gnus-buffers)))) + (url-retrieve (car image) + 'gnus-html-image-fetched + (list buffer image))))) (defun gnus-html-image-fetched (status buffer image) "Callback function called when image has been fetched." (unless (plist-get status :error) - (when gnus-html-image-automatic-caching - (url-store-in-cache (current-buffer))) (when (and (or (search-forward "\n\n" nil t) (search-forward "\r\n\r\n" nil t)) - (buffer-live-p buffer)) - (let ((data (buffer-substring (point) (point-max)))) - (with-current-buffer buffer - (let ((inhibit-read-only t)) - (gnus-html-put-image data (car image) (cadr image))))))) + (not (eobp))) + (when gnus-html-image-automatic-caching + (url-store-in-cache (current-buffer))) + (when (buffer-live-p buffer) + (let ((data (buffer-substring (point) (point-max)))) + (with-current-buffer buffer + (let ((inhibit-read-only t)) + (gnus-html-put-image data (car image) (cadr image)))))))) (kill-buffer (current-buffer))) (defun gnus-html-get-image-data (url) @@ -484,8 +487,14 @@ Return a string with image data." (gnus-put-text-property start (point) 'gnus-alt-text alt-text) (when url - (gnus-put-text-property start (point) - 'image-url url)) + (gnus-add-text-properties + start (point) + `(image-url + ,url + image-displayer + (lambda (url start end) + (gnus-html-display-image url start end + ,alt-text))))) (gnus-add-image 'external image) t) ;; Bad image, try to show something else