From: yamaoka Date: Wed, 30 Jan 2002 13:14:23 +0000 (+0000) Subject: Synch with Oort Gnus. X-Git-Tag: t-gnus-6_15_6-01-quimby~92 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0cb0276efde65c1b951ca6885189a7c2684d623;p=elisp%2Fgnus.git- Synch with Oort Gnus. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1b7fff1..4ec000a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,18 @@ +2002-01-30 Katsumi Yamaoka + + * 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 * message.el (message-mode-syntax-table): Move forward. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 9ba07b4..4eb49a1 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -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. diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 8e26afc..ddb3092 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -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 diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 8d573aa..5b14ca1 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -153,19 +153,76 @@ (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 @@ -177,6 +234,7 @@ (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)) @@ -195,12 +253,15 @@ (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 diff --git a/texi/ChangeLog b/texi/ChangeLog index 7b916ef..b846b94 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,8 @@ +2002-01-30 Katsumi Yamaoka + + * emacs-mime.texi (Customization): Move emacs-w3m stuff backward; + added documentation for `mm-inline-text-html-with-w3m-keymap'. + 2002-01-28 ShengHuo ZHU * gnus.texi (Agent Expiry): Addition. diff --git a/texi/emacs-mime.texi b/texi/emacs-mime.texi index 4088623..276de11 100644 --- a/texi/emacs-mime.texi +++ b/texi/emacs-mime.texi @@ -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{} 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{} 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