]> git.eshelyaron.com Git - emacs.git/commitdiff
gnus-art.el (gnus-inhibit-images): New user option.
authorKatsumi Yamaoka <yamaoka@jpl.org>
Wed, 17 Nov 2010 07:22:19 +0000 (07:22 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Wed, 17 Nov 2010 07:22:19 +0000 (07:22 +0000)
* gnus-art.el (gnus-inhibit-images): New user option.
(gnus-mime-display-single): Don't display image if it is non-nil.

* mm-decode.el (mm-shr): Bind shr-inhibit-images to the value of
gnus-inhibit-images.

* shr.el (shr-image-displayer): New function.
(shr-tag-img): Use it.

lisp/gnus/ChangeLog
lisp/gnus/gnus-art.el
lisp/gnus/mm-decode.el
lisp/gnus/shr.el

index 2cf48e24c7c6782afecbda14bd10e9ba658b1efd..7d3b2d06835bebbd9ab426bd2b238f5e0aa96e75 100644 (file)
@@ -1,3 +1,14 @@
+2010-11-17  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus-art.el (gnus-inhibit-images): New user option.
+       (gnus-mime-display-single): Don't display image if it is non-nil.
+
+       * mm-decode.el (mm-shr): Bind shr-inhibit-images to the value of
+       gnus-inhibit-images.
+
+       * shr.el (shr-image-displayer): New function.
+       (shr-tag-img): Use it.
+
 2010-11-16  Daniel Dehennin  <daniel.dehennin@baby-gnu.org>
 
        * mml2015.el (mml2015-epg-sign): Use From header.
index e2be314f8d19ee1e45c5a44e4303fe2bd0786e63..4ff36e7a589ae3562b1056589edd4aa822dd3c7b 100644 (file)
@@ -1636,6 +1636,12 @@ This requires GNU Libidn, and by default only enabled if it is found."
   :group 'gnus-article
   :type 'boolean)
 
+(defcustom gnus-inhibit-images nil
+  "Non-nil means inhibit displaying of images inline in the article body."
+  :version "24.1"
+  :group 'gnus-article
+  :type 'boolean)
+
 (defcustom gnus-blocked-images 'gnus-block-private-groups
   "Images that have URLs matching this regexp will be blocked.
 This can also be a function to be evaluated.  If so, it will be
@@ -5845,7 +5851,9 @@ If displaying \"text/html\" is discouraged \(see
        (while ignored
          (when (string-match (pop ignored) type)
            (throw 'ignored nil)))
-       (if (and (setq not-attachment
+       (if (and (not (and gnus-inhibit-images
+                          (string-match "\\`image/" type)))
+                (setq not-attachment
                       (and (not (mm-inline-override-p handle))
                            (or (not (mm-handle-disposition handle))
                                (equal (car (mm-handle-disposition handle))
index 2ab5a548e42095b763902d77d6ba912f8015ed1d..f27cc5907b0df0f35009573ad198ca4b9535689a 100644 (file)
@@ -1687,6 +1687,7 @@ If RECURSIVE, search recursively."
                  (start end &optional base-url))
 (declare-function shr-insert-document "shr" (dom))
 (defvar shr-blocked-images)
+(defvar gnus-inhibit-images)
 (autoload 'gnus-blocked-images "gnus-art")
 
 (defun mm-shr (handle)
@@ -1703,6 +1704,7 @@ If RECURSIVE, search recursively."
                                  (when handle
                                    (mm-with-part handle
                                      (buffer-string))))))
+       (shr-inhibit-images gnus-inhibit-images)
        charset)
     (unless handle
       (setq handle (mm-dissect-buffer t)))
index 4f3b20531f599e39997461b36f1e98c50cd04d43..2dd33ecbc13f2ea185a4700dbde90bd80afe79b8 100644 (file)
@@ -435,6 +435,26 @@ Return a string with image data."
                (search-forward "\r\n\r\n" nil t))
        (buffer-substring (point) (point-max))))))
 
+(defun shr-image-displayer (content-function)
+  "Return a function to display an image.
+CONTENT-FUNCTION is a function to retrieve an image for a cid url that
+is an argument.  The function to be returned takes three arguments URL,
+START, and END."
+  `(lambda (url start end)
+     (if (string-match "\\`cid:" url)
+        ,(when content-function
+           `(let ((image (funcall ,content-function
+                                  (substring url (match-end 0)))))
+              (when image
+                (goto-char start)
+                (shr-put-image image
+                               (prog1
+                                   (buffer-substring-no-properties start end)
+                                 (delete-region start end))))))
+       (url-retrieve url 'shr-image-fetched
+                    (list (current-buffer) start end)
+                    t))))
+
 (defun shr-heading (cont &rest types)
   (shr-ensure-paragraph)
   (apply #'shr-fontize-cont cont types)
@@ -574,10 +594,7 @@ Return a string with image data."
        (put-text-property start (point) 'shr-alt alt)
        (put-text-property start (point) 'image-url url)
        (put-text-property start (point) 'image-displayer
-                          (lambda (url start end)
-                            (url-retrieve url 'shr-image-fetched
-                                          (list (current-buffer) start end)
-                                          t)))
+                          (shr-image-displayer shr-content-function))
        (put-text-property start (point) 'help-echo alt)
        (setq shr-state 'image)))))