;; -*- emacs-lisp -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; $Id: gnus_article.el,v 1.26 2006-11-06 21:02:42 rscholz Exp $ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Einstellungen für den Article Buffer ;; ;; Die offizielle Quelle dieser Datei ist ;; <http://www.zonix.de/projects/emacs/config> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; angezeigte Header (Info-goto-node "(Gnus)Hiding Headers") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq gnus-visible-headers '( "^From:" "^Newsgroups:" "^Subject:" "^Date:" "^Message-ID:" "^Followup-To:" "^Mail-Followup-To:" "^Reply-To:" "^Organization:" "^Summary:" "^Keywords:" "^Importance:" "^To:" "^[BGF]?Cc:" "^Mail-Copies-To:" "^Gnus-Warning:" "^X-Sent:" "^X-Face-Img:" "^User-Agent:" "^X-Mailer:" "^X-Mailreader:" "^X-Newsreader:" "^X-User-Agent:" "^X-Now-.*:" "^X-URL:" "^X-No-Archive:" "^X-PGP-Sig:" "^Supersedes:" "^X-Spam-Status:" "^X-Spam-Report:" "^X-GMX-Antispam:" "^X-Virii-Status:" )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Format der Header (Info-goto-node "(Gnus)Customizing Articles") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; immer lokale Zeit darstellen (setq gnus-treat-date-local 'head) ;; relative Zeit darstellen (setq gnus-treat-date-lapsed 'head) (gnus-start-date-timer) (setq gnus-article-date-lapsed-new-header t) ;; keine zusätzliche Zeile zwischen Header und Body (setq gnus-treat-body-boundary nil) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; X-Faces & Picons (Info-goto-node "(Gnus)Article Display") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; X-Faces automatisch anzeigen (setq gnus-treat-display-xface 'head) ;; X-Face separat anzeigen ;(setq x-face-mule-highlight-x-face-position 'x-face) ;; X-Face-Cache speichern (setq x-face-mule-force-save-cache-file t) ;; Ich weiß, wie ich aussehe (setq gnus-article-x-face-too-ugly user-full-name) ;; xli zur Anzeige benutzen bei Emacs 20 (when (< emacs-major-version 21) (setq gnus-article-x-face-command (concat "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm |" "xli -quiet -background '#ecebf0' /dev/stdin"))) ;; keine Picons anzeigen (setq gnus-treat-newsgroups-picon nil) (setq gnus-treat-mail-picon nil) (setq gnus-treat-from-picon nil) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Body, MIME-Parts etc. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Seitenumbruch interpretieren (setq gnus-break-pages t) ;; Beim Blättern mit Space nicht weiterblättern, falls nur noch ;; zitierter Text oder Signatur folgt (ab Gnus 5.10) ;(setq gnus-article-skip-boring t) ;; keine automatische Anzeige für UU und Shell-Archive (add-to-list 'mm-uu-configure-list '(uu . disabled)) (add-to-list 'mm-uu-configure-list '(shar . disabled)) ;; zsh: "Gnus is not faulty but not fully implemented"... (setq gnus-mime-display-multipart-related-as-mixed t) ;; unbekannte Charsets mit Default-Charset darstellen ;(setq gnus-newsgroup-ignored-charsets '(gnus-unknown)) ;; `5 g' bzw. `8 g' aus dem Summary-Buffer zeigt den Artikel mit dem ;; entsprechenden Charset an. (setq gnus-summary-show-article-charset-alist '((5 . big5) (8 . utf-8) (12 . windows-1252))) ;; Default-Zeichensatz, falls keiner deklariert wurde (ab Gnus 5.10) (setq gnus-default-charset 'iso-8859-1) ;; kein Defaultzeichensatz -> Oktalcodes werden bei non-ASCII-Zeichen ;; angezeigt, vgl. Jesper Harder in <m3istpb46j.fsf@defun.localdomain> ;; (hey Jesper, deine Message-ID ist b0rked :-) ;(setq gnus-default-charset nil) ;; falls kein Mime-Version-Header vorhanden ist, trotzdem versuchen, ;; die Nachricht als MIME-Nachricht darzustellen (ab Gnus 5.10) ;(setq gnus-article-loose-mime t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Bilder (ab Gnus 5.10 / Emacs 21) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; auch Bilder in HTML-Artikeln anzeigen, aber nur wenn... (setq mm-inline-text-html-with-images t) ;; ...sie nicht aus dem Web geholt werden, sondern lokal im Artikel ;; gespeichert vorliegen (setq mm-w3m-safe-url-regexp "\\`cid:") ;; auch große Bilder inline anzeigem (setq mm-inline-large-images t) ;; inline anzeigen, auch wenn als Attachment deklariert (add-to-list 'mm-attachment-override-types "image/.*") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Washing (Info-goto-node "(Gnus)Article Washing") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Smileys nicht automatisch anzeigen lassen (setq gnus-treat-display-smileys nil) ;; überflüssige Leerzeilen löschen (setq gnus-treat-strip-trailing-blank-lines t) (setq gnus-treat-strip-leading-blank-lines t) (setq gnus-treat-strip-multiple-blank-lines t) ;; `W |' wäscht mit externem Kommando (define-key 'gnus-summary-wash-map "|" 'gnus-summary-pipe-message) ;; Freenet-Banner (add-to-list 'gnus-article-banner-alist '(freenet . "^-- \nImmer auf dem aktuellen Stand mit den Newsgroups von freenet.de:\nhttp://newsgroups.freenet.de")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Quoting (Info-goto-node "(Gnus)Article Highlighting") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Quotings verstecken ;(setq gnus-treat-hide-citation t) ;; sehr lange Quotes verstecken (setq gnus-cited-opened-text-button-line-format "%(%{[- %n lines]%}%)\n") (setq gnus-cited-closed-text-button-line-format "%(%{[+ %n lines]%}%)\n") (setq gnus-cited-lines-visible 3) (setq gnus-cite-hide-percentage 90) (setq gnus-cite-hide-absolute 20) ;; auch einzelne gequotete Zeilen einfärben (setq gnus-cite-minimum-match-count 1) ;; Erkennen seltsamer Attribution Lines (setq gnus-cite-attribution-suffix (concat "\\(\\(wrote\\|writes\\|said\\|says\\|schreibt\\|schrieb\\|schrub\\|>\\)" "\\(:\\|\\.\\.\\.\\)\\|-----Original Message-----\\)\\s-*$")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Faces ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'gnus-art) (set-face-foreground 'gnus-header-content-face "DarkGreen") (set-face-foreground 'gnus-header-name-face "Darkgreen") (set-face-bold-p 'gnus-header-name-face t) (set-face-foreground 'gnus-header-newsgroups-face "Darkgreen") (set-face-bold-p 'gnus-header-newsgroups-face t) (set-face-foreground 'gnus-header-subject-face "firebrick") (set-face-bold-p 'gnus-header-subject-face t) (set-face-foreground 'gnus-header-from-face "MidnightBlue") (set-face-bold-p 'gnus-header-from-face t) (when window-system (set-face-foreground 'gnus-signature-face "Grey40")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; TeX-Sequenzen umwandeln ("a -> ä) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Stefan Wiens <wk66icrg1l.fsf@helium.eswe.dyndns.org> (defun my-gnus-summary-gtex2iso () "Translate german TeX sequences in article to ISO 8859-1." (interactive) (require 'iso-cvt) (gnus-summary-select-article) (let ((mail-header-separator "")) (gnus-eval-in-buffer-window gnus-article-buffer (save-restriction (widen) (let ((start (window-start)) buffer-read-only) (when (message-goto-body) (iso-gtex2iso (point) (point-max))) (set-window-start (get-buffer-window (current-buffer)) start)))))) (define-key gnus-summary-wash-map "x" 'my-gnus-summary-gtex2iso) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Highlighting von Lisp-Code in bestimmten Gruppen ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Oliver Scholz in <m366152i3i.fsf@ID-87814.user.dfncis.de>, ;; Ergänzungen von Hans-Jürgen Ficker. (defvar egoge-emacs-lisp-ngs-regexp (regexp-opt '("comp.emacs" "gnu.emacs.help" "virtual.emacs" "gnus.ding" "gnu.emacs.gnus" "de.comm.software.gnus" "de.comp.editoren"))) (add-to-list 'mm-uu-type-alist '(emacs-lisp "^(" ")\\s-*\\(\n\n\\|\n?\\'\\)" mm-uu-emacs-sources-extract nil egoge-mm-uu-emacs-lisp-test)) ;; das lässt sich sicher noch optimieren. Dieser Kommentar hier zum ;; Beispiel wird nicht erfasst. Aber andererseits: man kann nicht ;; alles haben. (Jedenfalls nicht mit so geringem Aufwand.) (defun egoge-mm-uu-emacs-lisp-test () (setq file-name (match-string 1)) (and gnus-newsgroup-name (string-match egoge-emacs-lisp-ngs-regexp gnus-newsgroup-name))) (mm-uu-configure) ;; notwendig, damit die Änderungen in Effekt treten. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Washing von UTF-7-Artikeln (kann Emacs 21 noch nicht) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Hans-Jürgen Ficker in <y19it358uzn.fsf@laptop.backmes.de> (defun hjf-gnus-article-decode-utf7 () "Translate UTF-7 into proper text" (interactive) (save-window-excursion (gnus-summary-select-article-buffer) (toggle-read-only -1) (article-goto-body) (while (re-search-forward "+\\([A-Za-z0-9+/]*\\)-?" nil t) (let* ((matched (match-string 1)) (bytes (string-to-list (base64-decode-string (concat matched (make-string (% (- 1000 (length matched)) 4) ?=))))) (decoded-string (if (string= matched "") "+" (with-temp-buffer (while (and bytes (cdr bytes)) (let ((this-char (decode-char 'ucs (+ (* 256 (car bytes)) (car (cdr bytes)))))) (insert (string (or this-char ??)))) (setq bytes (cdr (cdr bytes)))) (buffer-string))))) (replace-match decoded-string t t))) (toggle-read-only 1))) (define-key gnus-summary-wash-map "7" 'hjf-gnus-article-decode-utf7) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Washing von nicht deklarierten format=flowed-Artikeln ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Karl Pflästerer in <m38yu9aw0c.fsf@hamster.pflaesterer.de> (defun gnus-article-fill-flowed () (interactive) (save-excursion (set-buffer gnus-article-buffer) (save-restriction (let ((buffer-read-only nil)) (gnus-narrow-to-body) (fill-flowed))))) (define-key gnus-summary-wash-map "F" 'gnus-article-fill-flowed) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Nicht deklarierte 8bit.Zeichen als Oktalsequenzen anzeigen ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Oliver Scholz in <ur885rzc6.fsf@ID-87814.user.dfncis.de> ;; -------------------------------------------------------------------- ;; Display characters from the charsets `eight-bit-control' and ;; `eight-bit-graphic' as octal numbers in `font-lock-warning-face' (defun egoge-display-eight-bit-as-octal (&optional face) (let ((face-offset (if face (* (face-id face) (expt 2 19)) 0)) char) (dotimes (i 128) (setq char (+ i 128)) (aset standard-display-table char (vconcat (mapcar (lambda (c) (+ face-offset c)) (format "\\%o" char))))))) ;(eval-after-load "font-lock" ; '(egoge-display-eight-bit-as-octal 'font-lock-warning-face))