;; -*- emacs-lisp -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; $Id: gnus_html.el,v 1.4 2006-11-06 21:02:42 rscholz Exp $ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Einstellungen für die Darstellung von HTML in Gnus ;; ;; Die offizielle Quelle dieser Datei ist ;; <http://www.zonix.de/projects/emacs/config> ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Auswahl bei Alternativen ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; bei vorhandenen Alternativen vermeiden (setq mm-discouraged-alternatives '("text/html" "text/richtext" "multipart/related")) ;; HTML nicht interpretieren sondern als Source anzeigen ;(setq mm-automatic-display (remove "text/html" mm-automatic-display)) ;; Katsumi Yamaoka in <yosusn7ohc5l.fsf@jpl.org> ;; Washing auch auf gerenderte HTML-Mails anwenden (eval-after-load "gnus-art" '(setq gnus-article-treat-types (cons "text/html" gnus-article-treat-types))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Aufruf externer Programme (ab Gnus 5.10) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; emacs-w3m nutzen (setq mm-text-html-renderer 'w3m) ;; keine w3m-Tastenbelegungen (setq mm-inline-text-html-with-w3m-keymap nil) ;; keine Bilder (setq mm-inline-text-html-with-images nil) ;; emacs-w3m auch beim Washing `W H' von falsch deklarierten ;; HTML-Mails verwenden (setq gnus-article-wash-function 'gnus-article-wash-html-with-w3m) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; HTML extern rendern lassen (mit w3m oder lynx) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ab Gnus 5.10 obsolet -> s.o. ;; Marc Thomas in g.e.g. <wf11yowmovt.fsf@svelte.home> ; (let ((old-text-html-test (assoc "text/html" mm-inline-media-tests)) ; (new-text-html-test '("text/html" ; my:gnus-html2text ; (lambda (handle) ; (fboundp 'my:gnus-html2text))))) ; (if old-text-html-test ; (setcdr old-text-html-test (cdr new-text-html-test)) ; (setq mm-inline-media-tests (cons new-text-html-test ; mm-inline-media-tests)))) ;; function to call to handle text/html attachments (defun my:gnus-html2text (handle) (let (text) (with-temp-buffer (mm-insert-part handle) (save-window-excursion (my:html2text-region (point-min) (point-max)) (setq text (buffer-string)))) (mm-insert-inline handle text))) (defun my:html2text-region-lynx (min max) "Replace the region with the result of running lynx -dump on it." (interactive "r") ;; lynx requires the html to be in a file (let ((file (expand-file-name (concat (make-temp-name "/tmp/") ".html")))) (unwind-protect (progn (write-region min max file nil 'silent) (delete-region min max) (call-process "lynx" nil t t "-dump" "-force_html" "-nopause" file)) (delete-file file)))) (defun my:html2text-region-w3m (min max) "Replace the region with the result of running w3m -dump on it." (interactive "r") ;; w3m accepts html on stdin (call-process-region min max "w3m" t t t "-dump" "-T" "text/html")) (defalias 'my:html2text-region 'my:html2text-region-w3m) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; HTML "intern" rendern lassen (mit emacs-w3m) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ab Gnus 5.10 obsolet -> s.o. ;; John Wiegley in <m3wv5732q8.fsf@gnu.org> ; (defadvice mm-inline-text (around use-w3m-instead (handle) activate) ; (let ((type (mm-handle-media-subtype handle))) ; (if (not (equal type "html")) ; ad-do-it ; (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))) ; (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)))))))))) ;; Greg in <2fasnftcpt4.fsf@broadcom.com> on gnu.emacs.help ;; (defvar gnus-w3m-minor-mode nil) ;; (make-variable-buffer-local 'gnus-w3m-minor-mode) ;; (add-to-list 'minor-mode-alist '(gnus-w3m-minor-mode " w3m")) ;; (add-to-list 'minor-mode-map-alist (cons 'gnus-w3m-minor-mode w3m-mode-map)) ;; (defadvice mm-inline-text (around use-w3m-instead (handle) activate) ;; (let ((type (mm-handle-media-subtype handle))) ;; (if (not (equal type "html")) ;; ad-do-it ;; (let ((text (mm-get-part handle)) ;; (b (point))) ;; (save-excursion ;; (insert text) ;; (save-restriction ;; (narrow-to-region b (point)) ;; (goto-char (point-min)) ;; (setq w3m-display-inline-image nil) ;; (w3m-region (point-min) (point-max)) ;; (setq gnus-w3m-minor-mode t)) ;; (mm-handle-set-undisplayer ;; handle ;; `(lambda () ;; (let (buffer-read-only) ;; (setq gnus-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)))))))))) ;; Dischi's Zusatzfunktionen (defun browse-w3m-anchor-external () (interactive) (if (w3m-anchor) (browse-url (w3m-anchor)))) (defun dischi/gnus-article-mode-hook () (progn (local-set-key "v" 'browse-w3m-anchor-external) (local-set-key [(backtab)] 'w3m-next-anchor) (local-set-key [(control tab)] 'w3m-next-anchor))) (add-hook 'gnus-article-mode-hook 'dischi/gnus-article-mode-hook)