(defun w3m-view-html-source ()
"View HTML source in the mail buffer."
(interactive)
(cond
((eq major-mode 'gnus-article-mode)
(when (buffer-live-p (symbol-value 'gnus-summary-buffer))
(dont-compile
(let ((article (save-excursion
(set-buffer gnus-summary-buffer)
(gnus-summary-article-number)))
(mm-inline-media-tests mm-inline-media-tests)
src text keymap)
(if article
(progn
(if (setq src (get-text-property (point)
'w3m-view-html-source))
nil
(if (setq text (assoc "text/plain" mm-inline-media-tests))
(progn
(setq mm-inline-media-tests
(cons (cons "text/html" (cdr text))
mm-inline-media-tests)))))
(save-window-excursion
(save-excursion
(set-buffer gnus-summary-buffer)
(gnus-summary-display-article article)))
(article-goto-body)
(if (and (not src)
(eq this-command 'w3m-view-html-source))
(progn
(define-key (setq keymap (make-sparse-keymap))
(this-command-keys) 'w3m-view-html-source)
(add-text-properties
(point) (point-max)
(nconc (gnus-local-map-property keymap)
;; Put the mark meaning this part was
;; displayed by this command.
'(w3m-view-html-source t)))))))))))
(t
(message "This command doesn't support `%s' yet" major-mode)
(ding))))
(define-key w3m-minor-mode-map "\\" 'w3m-view-html-source)