Allow gnus-html to register image displayer callbacks.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Mon, 15 Nov 2010 23:48:44 +0000 (00:48 +0100)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Mon, 15 Nov 2010 23:48:44 +0000 (00:48 +0100)
lisp/ChangeLog
lisp/gnus-html.el
lisp/gnus-util.el

index 686f365..0795698 100644 (file)
@@ -1,5 +1,9 @@
 2010-11-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * gnus-html.el (gnus-html-wash-images): Register a displayer.
+
+       * gnus-util.el (gnus-find-text-property-region): Return markers.
+
        * shr.el (shr-tag-img): Put a displayer in the text property.
 
        * gnus-util.el (gnus-find-text-property-region): New utility function.
index 8274e20..dc2400c 100644 (file)
@@ -189,19 +189,26 @@ CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
            (let* ((handle (mm-get-content-id
                             (setq url (match-string 1 url))))
                    (image (when handle
-                            (gnus-create-image (mm-with-part handle (buffer-string))
-                                               nil t))))
+                            (gnus-create-image
+                            (mm-with-part handle (buffer-string))
+                            nil t))))
              (when image
                 (let ((string (buffer-substring start end)))
                   (delete-region start end)
-                  (gnus-put-image (gnus-rescale-image image (gnus-html-maximum-image-size))
+                  (gnus-put-image (gnus-rescale-image
+                                  image (gnus-html-maximum-image-size))
                                   (gnus-string-or string "*") 'cid)
                   (gnus-add-image 'cid image))))
          ;; Normal, external URL.
-          (let ((alt-text (when (string-match "\\(alt\\|title\\)=\"\\([^\"]+\\)"
-                                              parameters)
-                            (xml-substitute-special (match-string 2 parameters)))))
+          (let ((alt-text
+                (when (string-match "\\(alt\\|title\\)=\"\\([^\"]+\\)"
+                                    parameters)
+                  (xml-substitute-special (match-string 2 parameters)))))
             (gnus-put-text-property start end 'image-url url)
+            (gnus-put-text-property
+            start end 'image-displayer
+            (lambda (url start end)
+              (gnus-html-display-image url start end)))
             (if (gnus-html-image-url-blocked-p
                  url
                  (if (buffer-live-p gnus-summary-buffer)
index 4e4aab4..9deedbe 100644 (file)
@@ -288,7 +288,10 @@ Uses `gnus-extract-address-components'."
       (if (not end)
          (setq start nil)
        (when value
-         (push (list start end value) regions))
+         (push (list (set-marker (make-marker) start)
+                     (set-marker (make-marker) end)
+                     value)
+               regions))
        (setq start (next-single-property-change start prop))))
     (nreverse regions)))