Synch with Oort Gnus.
authoryamaoka <yamaoka>
Wed, 30 Jan 2002 13:14:23 +0000 (13:14 +0000)
committeryamaoka <yamaoka>
Wed, 30 Jan 2002 13:14:23 +0000 (13:14 +0000)
lisp/ChangeLog
lisp/gnus-art.el
lisp/mm-decode.el
lisp/mm-view.el
texi/ChangeLog
texi/emacs-mime.texi

index 1b7fff1..4ec000a 100644 (file)
@@ -1,3 +1,18 @@
+2002-01-30  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus-art.el (gnus-article-wash-html-with-w3m): Add keymap
+       property to the buffer for using emacs-w3m command keys.
+
+       * mm-decode.el (mm-inline-text-html-with-w3m-keymap): New user
+       option.
+
+       * mm-view.el (mm-w3m-mode-map): New variable.
+       (mm-w3m-mode-command-alist): New variable.
+       (mm-w3m-minor-mode): Removed.
+       (mm-setup-w3m): Setup `mm-w3m-mode-map'; don't add minor mode.
+       (mm-inline-text-html-render-with-w3m): Add keymap property to the
+       buffer for using emacs-w3m command keys.
+
 2002-01-29  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * message.el (message-mode-syntax-table): Move forward.
index 9ba07b4..4eb49a1 100644 (file)
@@ -2292,10 +2292,16 @@ If READ-CHARSET, ask for a coding system."
 (defun gnus-article-wash-html-with-w3m ()
   "Wash the current buffer with emacs-w3m."
   (mm-setup-w3m)
-  (let ((w3m-safe-url-regexp "\\`cid:")
-       (w3m-display-inline-images mm-inline-text-html-with-images))
-    (w3m-region (point) (point-max)))
-  (setq mm-w3m-minor-mode t))
+  (save-restriction
+    (narrow-to-region (point) (point-max))
+    (let ((w3m-safe-url-regexp "\\`cid:")
+         (w3m-display-inline-images mm-inline-text-html-with-images))
+      (w3m-region (point-min) (point-max)))
+    (when mm-inline-text-html-with-w3m-keymap
+      (add-text-properties
+       (point-min) (point-max)
+       (append '(mm-inline-text-html-with-w3m t)
+              (gnus-local-map-property mm-w3m-mode-map))))))
 
 (defun article-hide-list-identifiers ()
   "Remove list identifies from the Subject header.
index 8e26afc..ddb3092 100644 (file)
@@ -117,6 +117,11 @@ this value."
   :type 'boolean
   :group 'mime-display)
 
+(defcustom mm-inline-text-html-with-w3m-keymap t
+  "If non-nil, use emacs-w3m command keys in the article buffer."
+  :type 'boolean
+  :group 'mime-display)
+
 (defcustom mm-inline-media-tests
   '(("image/jpeg"
      mm-inline-image
index 8d573aa..5b14ca1 100644 (file)
              (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)
+(defvar mm-w3m-mode-map nil
+  "Local keymap for inlined text/html part rendered by emacs-w3m.  It will
+be slightly different from `w3m-mode-map' to use in the article buffer.")
+
+(defvar mm-w3m-mode-command-alist
+  '((backward-char)
+    (describe-mode)
+    (forward-char)
+    (goto-line)
+    (next-line)
+    (previous-line)
+    (w3m-antenna)
+    (w3m-antenna-add-current-url)
+    (w3m-bookmark-add-current-url)
+    (w3m-bookmark-add-this-url)
+    (w3m-bookmark-view)
+    (w3m-close-window)
+    (w3m-copy-buffer)
+    (w3m-delete-buffer)
+    (w3m-dtree)
+    (w3m-edit-current-url)
+    (w3m-edit-this-url)
+    (w3m-gohome)
+    (w3m-goto-url)
+    (w3m-goto-url-new-session)
+    (w3m-history)
+    (w3m-history-restore-position)
+    (w3m-history-store-position)
+    (w3m-namazu)
+    (w3m-next-buffer)
+    (w3m-previous-buffer)
+    (w3m-quit)
+    (w3m-redisplay-with-charset)
+    (w3m-reload-this-page)
+    (w3m-scroll-down-or-previous-url)
+    (w3m-scroll-up-or-next-url)
+    (w3m-search)
+    (w3m-select-buffer)
+    (w3m-switch-buffer)
+    (w3m-view-header)
+    (w3m-view-parent-page)
+    (w3m-view-previous-page)
+    (w3m-view-source)
+    (w3m-weather))
+  "Alist of commands to use for emacs-w3m in the article buffer.  Each
+element looks like (FROM-COMMAND . TO-COMMAND); FROM-COMMAND should be
+registered in `w3m-mode-map' which will be substituted by TO-COMMAND
+in `mm-w3m-mode-map'.  If TO-COMMAND is nil, an article command key
+will not be substituted.")
+
+(defvar mm-w3m-setup nil
+  "Whether gnus-article-mode has been setup to use emacs-w3m.")
+
 (defun mm-setup-w3m ()
+  "Setup gnus-article-mode to use emacs-w3m."
   (unless mm-w3m-setup
     (require 'w3m)
+    (unless mm-w3m-mode-map
+      (setq mm-w3m-mode-map (copy-keymap w3m-mode-map))
+      (dolist (def mm-w3m-mode-command-alist)
+       (condition-case nil
+           (substitute-key-definition (car def) (cdr def) mm-w3m-mode-map)
+         (error))))
     (unless (assq 'gnus-article-mode w3m-cid-retrieve-function-alist)
       (push (cons 'gnus-article-mode 'mm-w3m-cid-retrieve)
            w3m-cid-retrieve-function-alist))
-    (gnus-add-minor-mode 'mm-w3m-minor-mode " w3m" w3m-mode-map)
     (setq mm-w3m-setup t)))
 
 (defun mm-w3m-cid-retrieve (url &rest args)
+  "Insert a content pointed by URL if it has the cid: scheme."
   (when (string-match "\\`cid:" url)
     (setq url (concat "<" (substring url (match-end 0)) ">"))
     (catch 'found-handle
          (throw 'found-handle (mm-handle-media-type handle)))))))
 
 (defun mm-inline-text-html-render-with-w3m (handle)
+  "Render a text/html part using emacs-w3m."
   (mm-setup-w3m)
   (let ((text (mm-get-part handle))
        (b (point))
        (let ((w3m-safe-url-regexp "\\`cid:")
              (w3m-display-inline-images mm-inline-text-html-with-images))
          (w3m-region (point-min) (point-max)))
-       (setq mm-w3m-minor-mode t))
+       (when mm-inline-text-html-with-w3m-keymap
+         (add-text-properties
+          (point-min) (point-max)
+          (append '(mm-inline-text-html-with-w3m t)
+                  (gnus-local-map-property mm-w3m-mode-map)))))
       (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
index 7b916ef..b846b94 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-30  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (Customization): Move emacs-w3m stuff backward;
+       added documentation for `mm-inline-text-html-with-w3m-keymap'.
+
 2002-01-28  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus.texi (Agent Expiry): Addition.
index 4088623..276de11 100644 (file)
@@ -1001,24 +1001,6 @@ 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-text-html-with-images
-Some HTML mails might have the trick of spammers using @samp{<img>} tags.
-It is likely to be intended to verify whether you have read the mail.
-You can prevent your personal informations from leaking by setting this
-option to @code{nil} (which is the default).  It is currently ignored by
-Emacs/w3.  For emacs-w3m, you may use the command @kbd{t} on the image
-anchor to show an image even if it is @code{nil}.
-
 @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
@@ -1080,6 +1062,29 @@ list containing that type.  For example assuming @code{mm-inlined-types}
 includes @samp{text/.*}, then including @samp{text/html} in this
 variable will cause @samp{text/html} parts to be treated as attachments.
 
+@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-text-html-with-images
+Some HTML mails might have the trick of spammers using @samp{<img>} tags.
+It is likely to be intended to verify whether you have read the mail.
+You can prevent your personal informations from leaking by setting this
+option to @code{nil} (which is the default).  It is currently ignored by
+Emacs/w3.  For emacs-w3m, you may use the command @kbd{t} on the image
+anchor to show an image (or @kbd{T} for loading all images) even if it
+is @code{nil}.
+
+@item mm-inline-text-html-with-w3m-keymap
+You can use emacs-w3m command keys in the inlined text/html part by
+setting this option to non-@code{nil}.  The default value is @code{t}.
+
 @end table