Synch with Oort Gnus (this change has no effect on T-gnus :-).
authoryamaoka <yamaoka>
Thu, 24 Jan 2002 06:59:15 +0000 (06:59 +0000)
committeryamaoka <yamaoka>
Thu, 24 Jan 2002 06:59:15 +0000 (06:59 +0000)
lisp/ChangeLog
lisp/lpath.el
lisp/mm-decode.el
lisp/mm-view.el
texi/ChangeLog
texi/emacs-mime.texi

index c806e69..da43d57 100644 (file)
@@ -1,3 +1,24 @@
+2002-01-24  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * lpath.el: Fbind `w3m-region'; bind `w3m-mode-map'.
+
+       * mm-decode.el (mm-inline-text-html-renderer): New user option.
+       (mm-inline-media-tests): Test whether the value of
+       `mm-inline-text-html-renderer' is a function for text/html.
+
+       * mm-view.el (mm-inline-text-html-render-with-w3): New function
+       separated from `mm-inline-text'.
+       (mm-w3m-minor-mode): New variable.
+       (mm-w3m-setup): New variable.
+       (mm-setup-w3m): New function.
+       (mm-inline-text-html-render-with-w3m): New function.
+       (mm-inline-text): Funcall `mm-inline-text-html-renderer' for
+       text/html.
+
+2002-01-23  Paul Jarc  <prj@po.cwru.edu>
+
+       * lpath.el: fbind make-symbolic-link and unix-sync for nnmaildir.
+
 2002-01-23  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus-xmas.el (gnus-xmas-redefine): Quote `gnus-completing-read'
index 604739d..d53a322 100644 (file)
@@ -21,6 +21,7 @@
               find-coding-systems-string
               image-size image-type-available-p insert-image
               image-type-from-file-header
+              make-symbolic-link
               make-temp-file message-xmas-redefine
               mail-aliases-setup mm-copy-tree
               mule-write-region-no-coding-system put-image
               sc-cite-regexp set-font-family set-font-size temp-directory
               string-as-multibyte
               tool-bar-add-item tool-bar-add-item-from-menu
+              unix-sync
               url-view-url vcard-pretty-print
               url-insert-file-contents
               w3-coding-system-for-mime-charset w3-prepare-buffer w3-region
+              w3m-region
               widget-make-intangible x-defined-colors))
 
 (maybe-bind '(adaptive-fill-first-line-regexp
@@ -54,7 +57,8 @@
              url-current-mime-headers w3-meta-charset-content-type-regexp
              rmail-enable-mime-composing
              rmail-insert-mime-forwarded-message-function
-             w3-meta-content-type-charset-regexp))
+             w3-meta-content-type-charset-regexp
+             w3m-mode-map))
 
 (if (featurep 'xemacs)
     (progn
index 7c85b3d..6447fa3 100644 (file)
   `(list ,buffer ,type ,encoding ,undisplayer
         ,disposition ,description ,cache ,id))
 
+(defcustom mm-inline-text-html-renderer
+  (cond ((locate-library "w3")
+        'mm-inline-text-html-render-with-w3)
+       ((locate-library "w3m")
+        'mm-inline-text-html-render-with-w3m))
+  "Function used for rendering HTML contents.  The function will be
+called with a MIME handle as the argument.  There are two pre-defined
+functions: `mm-inline-text-html-render-with-w3', which uses Emacs/w3;
+and `mm-inline-text-html-render-with-w3m', which uses emacs-w3m."
+  :type '(radio (function-item mm-inline-text-html-render-with-w3)
+               (function-item mm-inline-text-html-render-with-w3m)
+               (function))
+  :group 'mime-display)
+
 (defcustom mm-inline-media-tests
   '(("image/jpeg"
      mm-inline-image
     ("text/html"
      mm-inline-text
      (lambda (handle)
-       (locate-library "w3")))
+       (gnus-functionp mm-inline-text-html-renderer)))
     ("text/x-vcard"
      mm-inline-text
      (lambda (handle)
index 192b94f..26f68a0 100644 (file)
     (require 'url-vars)
     (setq mm-w3-setup t)))
 
+(defun mm-inline-text-html-render-with-w3 (handle)
+  (mm-setup-w3)
+  (let ((text (mm-get-part handle))
+       (b (point))
+       (url-standalone-mode t)
+       (w3-honor-stylesheets nil)
+       (w3-delay-image-loads t)
+       (url-current-object
+        (url-generic-parse-url (format "cid:%s" (mm-handle-id handle))))
+       (width (window-width))
+       (charset (mail-content-type-get
+                 (mm-handle-type handle) 'charset)))
+    (save-excursion
+      (insert text)
+      (save-restriction
+       (narrow-to-region b (point))
+       (goto-char (point-min))
+       (if (or (and (boundp 'w3-meta-content-type-charset-regexp)
+                    (re-search-forward
+                     w3-meta-content-type-charset-regexp nil t))
+               (and (boundp 'w3-meta-charset-content-type-regexp)
+                    (re-search-forward
+                     w3-meta-charset-content-type-regexp nil t)))
+           (setq charset
+                 (or (let ((bsubstr (buffer-substring-no-properties
+                                     (match-beginning 2)
+                                     (match-end 2))))
+                       (if (fboundp 'w3-coding-system-for-mime-charset)
+                           (w3-coding-system-for-mime-charset bsubstr)
+                         (mm-charset-to-coding-system bsubstr)))
+                     charset)))
+       (delete-region (point-min) (point-max))
+       (insert (mm-decode-string text charset))
+       (save-window-excursion
+         (save-restriction
+           (let ((w3-strict-width width)
+                 ;; Don't let w3 set the global version of
+                 ;; this variable.
+                 (fill-column fill-column)
+                 (w3-honor-stylesheets nil)
+                 (w3-delay-image-loads t)
+                 (url-standalone-mode t))
+             (condition-case var
+                 (w3-region (point-min) (point-max))
+               (error
+                (delete-region (point-min) (point-max))
+                (let ((b (point))
+                      (charset (mail-content-type-get
+                                (mm-handle-type handle) 'charset)))
+                  (if (or (eq charset 'gnus-decoded)
+                          (eq mail-parse-charset 'gnus-decoded))
+                      (save-restriction
+                        (narrow-to-region (point) (point))
+                        (mm-insert-part handle)
+                        (goto-char (point-max)))
+                    (insert (mm-decode-string (mm-get-part handle)
+                                              charset))))
+                (message
+                 "Error while rendering html; showing as text/plain"))))))
+       (mm-handle-set-undisplayer
+        handle
+        `(lambda ()
+           (let (buffer-read-only)
+             (if (functionp 'remove-specifier)
+                 (mapcar (lambda (prop)
+                           (remove-specifier
+                            (face-property 'default prop)
+                            (current-buffer)))
+                         '(background background-pixmap foreground)))
+             (delete-region ,(point-min-marker)
+                            ,(point-max-marker)))))))))
+
+(defvar mm-w3m-minor-mode nil)
+(make-variable-buffer-local 'mm-w3m-minor-mode)
+(defvar mm-w3m-setup nil)
+(defun mm-setup-w3m ()
+  (unless mm-w3m-setup
+    (require 'w3m)
+    (gnus-add-minor-mode 'mm-w3m-minor-mode " w3m" w3m-mode-map)
+    (setq mm-w3m-setup t)))
+
+(defun mm-inline-text-html-render-with-w3m (handle)
+  (mm-setup-w3m)
+  (let ((text (mm-get-part handle))
+       (b (point)))
+    (save-excursion
+      (insert text)
+      (save-restriction
+       (narrow-to-region b (point))
+       (goto-char (point-min))
+       (w3m-region (point-min) (point-max))
+       (setq mm-w3m-minor-mode t))
+      (mm-handle-set-undisplayer
+       handle
+       `(lambda ()
+         (let (buffer-read-only)
+           (setq mm-w3m-minor-mode nil)
+           (if (functionp 'remove-specifier)
+               (mapcar (lambda (prop)
+                         (remove-specifier
+                          (face-property 'default prop)
+                          (current-buffer)))
+                       '(background background-pixmap foreground)))
+           (delete-region ,(point-min-marker)
+                          ,(point-max-marker))))))))
+
 (defun mm-inline-text (handle)
   (let ((type (mm-handle-media-subtype handle))
-       text buffer-read-only)
+       buffer-read-only)
     (cond
      ((equal type "html")
-      (mm-setup-w3)
-      (setq text (mm-get-part handle))
-      (let ((b (point))
-           (url-standalone-mode t)
-           (w3-honor-stylesheets nil)
-           (w3-delay-image-loads t)
-           (url-current-object
-            (url-generic-parse-url (format "cid:%s" (mm-handle-id handle))))
-           (width (window-width))
-           (charset (mail-content-type-get
-                     (mm-handle-type handle) 'charset)))
-       (save-excursion
-         (insert text)
-         (save-restriction
-           (narrow-to-region b (point))
-           (goto-char (point-min))
-           (if (or (and (boundp 'w3-meta-content-type-charset-regexp)
-                        (re-search-forward
-                         w3-meta-content-type-charset-regexp nil t))
-                   (and (boundp 'w3-meta-charset-content-type-regexp)
-                        (re-search-forward
-                         w3-meta-charset-content-type-regexp nil t)))
-               (setq charset
-                     (or (let ((bsubstr (buffer-substring-no-properties
-                                         (match-beginning 2)
-                                         (match-end 2))))
-                           (if (fboundp 'w3-coding-system-for-mime-charset)
-                               (w3-coding-system-for-mime-charset bsubstr)
-                             (mm-charset-to-coding-system bsubstr)))
-                         charset)))
-           (delete-region (point-min) (point-max))
-           (insert (mm-decode-string text charset))
-           (save-window-excursion
-             (save-restriction
-               (let ((w3-strict-width width)
-                     ;; Don't let w3 set the global version of
-                     ;; this variable.
-                     (fill-column fill-column)
-                     (w3-honor-stylesheets nil)
-                     (w3-delay-image-loads t)
-                     (url-standalone-mode t))
-                 (condition-case var
-                     (w3-region (point-min) (point-max))
-                   (error
-                    (delete-region (point-min) (point-max))
-                    (let ((b (point))
-                          (charset (mail-content-type-get
-                                    (mm-handle-type handle) 'charset)))
-                      (if (or (eq charset 'gnus-decoded)
-                              (eq mail-parse-charset 'gnus-decoded))
-                          (save-restriction
-                            (narrow-to-region (point) (point))
-                            (mm-insert-part handle)
-                            (goto-char (point-max)))
-                        (insert (mm-decode-string (mm-get-part handle)
-                                                  charset))))
-                    (message
-                     "Error while rendering html; showing as text/plain"))))))
-           (mm-handle-set-undisplayer
-            handle
-            `(lambda ()
-               (let (buffer-read-only)
-                 (if (functionp 'remove-specifier)
-                     (mapcar (lambda (prop)
-                               (remove-specifier
-                                (face-property 'default prop)
-                                (current-buffer)))
-                             '(background background-pixmap foreground)))
-                 (delete-region ,(point-min-marker)
-                                ,(point-max-marker)))))))))
+      (funcall mm-inline-text-html-renderer handle))
      ((equal type "x-vcard")
       (mm-insert-inline
        handle
index 88c22d7..b1cd1f8 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-24  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (Customization): Added documentation for
+       `mm-inline-text-html-renderer'.
+
 2002-01-23  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus.texi (Article Washing): Add URL about w3m.
index 0c043ba..c6fb02b 100644 (file)
@@ -241,7 +241,7 @@ at the beginning of the narrowed buffer.
 @item mail-header-narrow-to-field
 @findex mail-header-narrow-to-field
 Narrow the buffer to the header under point.  Understands continuation
-headers. 
+headers.
 
 @item mail-header-fold-field
 @findex mail-header-fold-field
@@ -647,7 +647,7 @@ Take a year number and say whether it's a leap year.
 
 @item time-to-day-in-year
 Take a time and return the day number within the year that the time is
-in. 
+in.
 
 @end table
 
@@ -1001,9 +1001,19 @@ Prompt for a mailcap method to use to view the part.
 
 @table @code
 
+@item mm-inline-text-html-renderer
+@findex mm-inline-text-html-render-with-w3
+@findex mm-inline-text-html-render-with-w3m
+This function will be used to convert the HTML to the text.  There are
+two pre-defined functions: @code{mm-inline-text-html-render-with-w3},
+which uses Emacs/w3; and @code{mm-inline-text-html-render-with-w3m},
+which uses emacs-w3m (see @uref{http://emacs-w3m.namazu.org/} for more
+information about emacs-w3m).  The function will be called with a MIME
+handle as the argument.
+
 @item mm-inline-media-tests
 This is an alist where the key is a @sc{mime} type, the second element
-is a function to display the part @dfn{inline} (i.e., inside Emacs), and 
+is a function to display the part @dfn{inline} (i.e., inside Emacs), and
 the third element is a form to be @code{eval}ed to say whether the part
 can be displayed inline.
 
@@ -1023,7 +1033,7 @@ be displayed automatically.
 
 @item mm-attachment-override-types
 Some @sc{mime} agents create parts that have a content-disposition of
-@samp{attachment}.  This variable allows overriding that disposition and 
+@samp{attachment}.  This variable allows overriding that disposition and
 displaying the part inline.  (Note that the disposition is only
 overridden if we are able to, and want to, display the part inline.)
 
@@ -1082,7 +1092,7 @@ Here's an example viewer for displaying @code{text/enriched} inline:
 @end lisp
 
 We see that the function takes a @sc{mime} handle as its parameter.  It
-then goes to a temporary buffer, inserts the text of the part, does some 
+then goes to a temporary buffer, inserts the text of the part, does some
 work on the text, stores the result, goes back to the buffer it was
 called from and inserts the result.
 
@@ -1381,7 +1391,7 @@ given by @code{mail-parse-charset} (a symbol) is used.  (Never set this
 variable directly, though.  If you want to change the default charset,
 please consult the documentation of the package which you use to process
 @sc{mime} messages.
-@xref{Various Message Variables, , Various Message Variables, message, 
+@xref{Various Message Variables, , Various Message Variables, message,
       Message Manual}, for example.)
 If there are only ASCII characters, the @sc{mime} charset US-ASCII is
 used, of course.