Switch to using shr.el for HTML rendering.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Sat, 2 Oct 2010 15:36:17 +0000 (17:36 +0200)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Sat, 2 Oct 2010 15:36:17 +0000 (17:36 +0200)
lisp/ChangeLog
lisp/mm-decode.el
lisp/shr.el

index 1d1c39f..e67522a 100644 (file)
@@ -1,3 +1,12 @@
+2010-10-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * shr.el (shr-insert-document): Autoload.
+       (shr-img): Be silent.
+
+       * mm-decode.el (mm-text-html-renderer): Default to shr.el rendering, if
+       possible.
+       (mm-shr): New function.
+
 2010-10-02  Julien Danjou  <julien@danjou.info>
 
        * gnus-gravatar.el (gnus-gravatar-insert): Adjust character where we
index 7562e57..e98d666 100644 (file)
         ,disposition ,description ,cache ,id))
 
 (defcustom mm-text-html-renderer
-  (cond ((executable-find "w3m") 'gnus-article-html)
+  (cond ((fboundp 'libxml-parse-html-region) 'mm-shr)
+       ((executable-find "w3m") 'gnus-article-html)
        ((executable-find "links") 'links)
        ((executable-find "lynx") 'lynx)
        ((locate-library "w3") 'w3)
@@ -1674,6 +1675,14 @@ If RECURSIVE, search recursively."
         (and (eq (mm-body-7-or-8) '7bit)
              (not (mm-long-lines-p 76))))))
 
+(defun mm-shr (handle)
+  (let ((article-buffer (current-buffer)))
+    (unless handle
+      (setq handle (mm-dissect-buffer t)))
+    (shr-insert-document
+     (mm-with-part handle
+       (libxml-parse-html-region (point-min) (point-max))))))
+
 (provide 'mm-decode)
 
 ;;; mm-decode.el ends here
index 2b26a79..f7f9205 100644 (file)
@@ -66,9 +66,9 @@ fit these criteria."
        (push (shr-transform-dom sub) result)))
     (nreverse result)))
 
+;;;###autoload
 (defun shr-insert-document (dom)
-  (setq dom (shr-transform-dom dom))
-  (shr-descend dom))
+  (shr-descend (shr-transform-dom dom)))
 
 (defun shr-descend (dom)
   (let ((function (intern (concat "shr-" (symbol-name (car dom))) obarray)))
@@ -139,7 +139,8 @@ fit these criteria."
        (t
        (insert alt)
        (url-retrieve url 'shr-image-fetched
-                     (list (current-buffer) start (point-marker)))))
+                     (list (current-buffer) start (point-marker))
+                     t)))
       (insert " "))))
 
 (defun shr-image-fetched (status buffer start end)