diff -r df7496e40bee -r a234a7579958 lisp/my-gnus.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-gnus.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,123 @@ +(setq mm-coding-system-priorities + '(iso-latin-1 iso-latin-9)) + +(defun local-nnmail-match-expiry (newsgroup) + "Return default expiry for different newsgroup." + (cond ((string-match "archives" newsgroup) 'never) + ((string-match "sentmail" newsgroup) 'never) + ((string-match "postponed" newsgroup) 'never) + ((string-match "debian" newsgroup) 7) + ((string-match "jabber" newsgroup) 7) + ((string-match "gnucash" newsgroup) 7) + ((string-match "egroups" newsgroup) 7) + ((string-match "emacs.ding" newsgroup) 7) + ((string-match "spam" newsgroup) 1) + (t 31))) + +(defvar local-signature-alist nil) +(setq local-signature-alist + '(("default" . (("name" . "Fabien Niñoles") + ("title" . "") + ("email" . "fabien@tzone.org") + ("web" . "http://www.tzone.org") + ("key" . "C15D FE9E BB35 F596 127F BF7D 8F1F DFC9 BCE0 9436"))) + ("debian" . (("email" . "fabien@debian.org") + ("web" . "http://www.debian.org") + ("title" . "Debian Maintainer"))) + ("clef" . (("email" . "veneur@tzone.org") + ("web" . "http://harmonies.tzone.org") + ("title" . "Chevalier de la Loge des Terres de l'Aube") + ("name" . "Le Veneur Gris"))) + ("hdf" . (("email" . "veneur@tzone.org") + ("web" . "http://harmonies.tzone.org") + ("title" . "Chevalier Servant de Sa Dame") + ("name" . "Le Veneur Gris"))) + ("nephilim" . (("email" . "coeurdelune@nephilim-rpg.com") + ("name" . "Coeur de Lune") + ("title" . "Zéphir orphelin") + ("web" . "http://harmonies.tzone.org"))) + ("ids" . (("name" . "Goudron Sauvage") + ("title" . "Valier Vampire Décalé Rêvolutionnaire") + ("email" . "veneur@tzone.org") + ("web" . "http://cruche.valiere.free.fr"))) + ("rdd" . (("name" . "Baffouille") + ("title" . "Enrêveur et Archimage") + ("email" . "veneur@tzone.org") + ("web" . "http://harmonies.tzone.org"))) + ("jdr" . (("title" . "Arpèges, le jeu des Harmonies") + ("web" . "http://harmonies.tzone.org"))) + ("baff" . (("name" . "Baffouille") + ("title" . "Enrêveur et Archimage"))))) + +(defun local-gen-sign (type) + "Generate a signature." + (let + ((default-keys + (copy-alist + (cdr (assoc "default" local-signature-alist)))) + (selected-keys + (cdr (assoc type local-signature-alist)))) + (dolist (pair selected-keys default-keys) + (setcdr (assoc (car pair) default-keys) + (cdr pair))) + (let* + ((GPG-title "GPG KeyID:") + (name (cdr (assoc "name" default-keys))) + (title (cdr (assoc "title" default-keys))) + (email (cdr (assoc "email" default-keys))) + (web (cdr (assoc "web" default-keys))) + (key (cdr (assoc "key" default-keys))) + (maxlenght + (max (+ 2 (string-width name) (string-width title)) + (+ 2 (string-width email) (string-width web)) + (+ 1 (string-width GPG-title) (string-width key))))) + (concat name + (make-string (- maxlenght (string-width name) (string-width title)) ? ) + title + "\n" + email + (make-string (- maxlenght (string-width email) (string-width web)) ? ) + web + "\n" + GPG-title + (make-string (- maxlenght (string-width GPG-title) (string-width key)) ? ) + key + "\n")))) + +(defvar local-last-sig nil) +(defun local-insert-signature (type) + "Insert a signature." + (interactive (list + (completing-read "Which signature: " + local-signature-alist + nil + nil + nil + nil + (or local-last-sig "default")))) + (setq local-last-sig type) + (save-excursion + (goto-char (point-max)) + (let ((beg-sign + (re-search-backward message-signature-separator nil t))) + (if beg-sign + (kill-region + beg-sign (point-max)))) + (goto-char (point-max)) + (unless (bolp) + (insert "\n")) + (insert "-- \n") + (insert (local-gen-sign type)))) + +(defun local-alter-message-map () + (local-set-key "\C-c\C-w" 'local-insert-signature)) + +(defun local-outgoing-message-group () + "Return the sentmail group." + (concat "mail/sentmail-archives/" + (format-time-string "%Y.%m"))) + +(setq gnus-outgoing-message-group + 'local-outgoing-message-group) + +(provide 'local-gnus)