--- /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)