Wir möchten in einem eigenen News-Artikel einen extra Header-Eintrag einfügen, aber in Mails nicht. Und nur in Mails soll ebenfalls ein Eintrag im Header erscheinen,
der aber nicht in News-Artikeln erscheinen soll.
Zuerst könnten wir den Default-Header konfigurieren, die From-Zeile soll den Namen und dahinter die Adresse beinhalten
und ein Sender-Eintrag soll unterbunden werden.
(setq
message-from-style 'angles
;;* Die Signature beim Antworten nicht zitieren
message-cite-function 'message-cite-original-without-signature
;;* Eine Sender-Zeile im Header unterbinden
message-syntax-checks '((sender . disabled))
)
;;* Eine Extra-Zeile nur bei News-Artikeln in den Header setzen. X-No-Archive für
;;* deja.com z.B., gepostete Artikel werden dadurch _nicht_ ins News-Archiv
;;* aufgenommen.
(require 'message)
(setq message-required-news-headers
(nconc message-required-news-headers
(list '(X-No-Archive . "yes"))
)
)
;;* Und nur für Mails.
(require 'message)
(setq message-required-mail-headers
(nconc message-required-mail-headers
(list '(X-URL . "http://privat.schlund.de/paradies"))
(list '(X-Org . "Hands up! Linux of borgs!"))
)
)
;;* Einen guten Spruch automatisch von Fortune in die Signatur? Fortune
;;* beinhaltet mehrere Dateien mit Sprüchen oder Zitaten nach Themen
;;* sortiert, wie z.B. Kunst, Liebe, Computer, Linux oder Startrek. Der
;;* Spruch wird einwandfrei abgetrennt und ist auch nicht zu lang.
(setq message-signature 'fortune)
(defvar fortune-program nil
"*Program used to generate epigrams, default \"fortune\".")
(defvar fortune-switches nil
"*List of extra arguments when `fortune-program' is invoked.")
(defun fortune (&optional long-p)
"Generate a random epigram.
An optional prefix argument generates a long epigram.
The epigram is inserted at point if called interactively."
(interactive "*P")
(let ((fortune-buffer (generate-new-buffer " fortune"))
(fortune-string "Have an adequate day."))
(unwind-protect
(save-excursion
(set-buffer fortune-buffer)
(apply 'call-process
(append (list (or fortune-program "fortune") nil t nil)
fortune-switches (list (if long-p "-l" "-s"))))
(skip-chars-backward "\n\t ")
(setq fortune-string (buffer-substring (point-min) (point))))
(kill-buffer fortune-buffer))
(if (interactive-p)
(insert fortune-string))
fortune-string)
)
;;* adaptive scoring aktivieren.
(setq gnus-use-adaptive-scoring t)
;;* Hiermit können wir uns etwas zurücklehnen und Gnus die Score-Einträge
;;* übernehmen lassen, die anhand des Lese-Verhaltens vorgenommen werden.
(defvar gnus-default-adaptive-score-alist
'((gnus-unread-mark)
(gnus-ticked-mark (from 4))
(gnus-dormant-mark (from 5))
(gnus-del-mark (from -5) (subject -5))
(gnus-read-mark (from 4) (subject 2))
(gnus-expirable-mark (from -1) (subject -1))
(gnus-killed-mark (from -1) (subject -10))
(gnus-kill-file-mark)
(gnus-ancient-mark)
(gnus-low-score-mark)
(gnus-catchup-mark (from -1) (subject -5)))
)
;;* Für ungeliebte Poster, Spammer und Idioten kommt die Walze zur Geltung.
;;* --quick nuke people--
;;* This function should be called from the summary buffer with point
;;* on the article to nuke. It puts a rule in ~/News/SPAMMERS to lower
;;* scores of author
;;* It needs an entry in all.SCORE of (files "~/News/SPAMMERS").
(defun gnus-scum-expunge ()
"Remove this spammer from existance as much as possible."
(interactive)
(let* ((hdr (gnus-summary-article-header))
(subj (aref hdr 1))
(auth (aref hdr 2))
(artid (aref hdr 4))
(atsign (string-match "@" artid))
(host (substring artid (+ atsign 1) (- (length artid) 1)))
(oldscfile gnus-current-score-file))
;; Change to our spammer score file
(gnus-score-change-score-file "SPAMMERS")
;; Add our horrible spammer scores
;;(gnus-summary-score-entry "Subject" subj 'S' -1000 nil)
(gnus-summary-score-entry "From" auth 'S' -9999 nil)
(gnus-summary-score-entry "Message-ID" host 'S' -9999 nil)
;; Change back to old current score file
(gnus-score-change-score-file oldscfile)
(gnus-score-save)))
;;* Mit Control-cx wird zugeschlagen.
(global-set-key "\C-cx" 'gnus-scum-expunge)
;;* Wenn wir auf ein Artikel antworten, das Subject aber nicht mehr
;;* zutrifft, gibt es eine schnelle kleine Hilfe.
(defun dpi-change-subject (neues-subject)
"introduces new subject."
(interactive "snew Subject: ")
(let ((case-fold-search nil))
(goto-line 0)
(re-search-forward "^Subject: ")
(if (re-search-forward "R[Ee]: " nil t)
(replace-match "")
)
(insert-string neues-subject)
(insert-string " (was: ")
(end-of-line)
(insert-string ")")
)
)
;;* Und mit M-n oder je nach Einstellung der Tastatur auch Esc-n,
;;* kommt das Ganze ins Rollen.
(define-key message-mode-map '"\M-n" 'dpi-change-subject)