;; -*-Emacs-Lisp-*- 
;; Config pour Gnus 5.6.45

(autoload 'message-mark-inserted-region "message-utils" nil t)
(autoload 'message-mark-insert-file "message-utils" nil t)
(autoload 'message-strip-subject-was "message-utils" nil t)
(autoload 'message-change-subject "message-utils" nil t)
(autoload 'message-xpost-fup2 "message-utils" nil t)
(autoload 'message-add-archieve-header "message-utils" nil t)
;;;; Key bindings :
;; (define-key message-mode-map '[(control c) m] 'message-mark-inserted-region)
;; (define-key message-mode-map '[(control c) f] 'message-mark-insert-file)
;; (define-key message-mode-map '[(control c) x] 'message-xpost-fup2)
;; (define-key message-mode-map '[(control c) s] 'message-change-subject)
;; (define-key message-mode-map '[(control c) a] 'message-archieve-header)

;; (add-hook 'message-header-setup-hook 'message-strip-subject-was)
(defun message-utils-setup ()
  "Add menu-entries for message-utils."
  (easy-menu-add-item nil '("Message")
		      ["Insert Region Marked" 
		       message-mark-inserted-region t] "Spellcheck")
  (easy-menu-add-item nil '("Message")
		      ["Insert File Marked" 
		       message-mark-insert-file t] "Spellcheck")
  (easy-menu-add-item nil '("Field")
		      ["Crosspost / Followup" 
		       message-xpost-fup2 t] "----")
  (easy-menu-add-item nil '("Field")
   ["New Subject" message-mark-inserted-region t] "----")
  (easy-menu-add-item nil '("Field")
		      [ "X-No-Archieve:" 
			message-mark-inserted-region t ]))
(add-hook 'message-mode-hook 'message-utils-setup)





;; Pour avoir les heures qui défilent dans les dates de messages
(gnus-start-date-timer)

;; moi aussi j'aime savoir ce qu'on me répond
(add-hook 'message-sent-hook 'gnus-score-followup-article)
(add-hook 'message-sent-hook 'gnus-score-followup-thread)


;; hortografe
(add-hook 'message-send-hook 'ispell-message)



; c'est marrant ça
(autoload 'sm-add-random-header "silly-mail" nil t)
(add-hook 'message-setup-hook 'sm-add-random-header)

(setq 
 ;; Mais euhh je suis plus débutant
 gnus-novice-user nil
 ;; Me demande pas pour sortir
 gnus-interactive-exit nil
 ;; don't confirm catchup
 gnus-interactive-catchup nil 
 ;; Insert a courtesy message in mail copies of combined messages
 message-insert-courtesy-copy t
 ;; inserted at the start of a mailed copy of a posted message
 message-courtesy-message "[Mailed and posted to %s]\n" 
 gnus-large-newsgroup 500
 gnus-article-display-hook 
 '(
   gnus-article-de-quoted-unreadable 
   gnus-article-hide-pgp 
   gnus-article-highlight 
   gnus-smiley-display 
   gnus-article-hide-headers-if-wanted 
   gnus-article-hide-boring-headers 
   gnus-article-treat-overstrike 
   gnus-article-highlight
   ;; emphasize text according to `gnus-emphasis-alist'
   gnus-article-emphasize
   gnus-article-display-x-face
   gnus-article-date-lapsed
   )
 gnus-group-line-format  
 "%M%S%p%5y: %(%~(pad-right 40)g  Last read on %6,6~(cut 2)d%)\n"
 ;; gnus-summary-mode-line-format "%V  %p [%A] %Z"
 ;; gnus-summary-line-format "%U%R%z%6N%I%(%[%-14,14n%]%) %e%s\n"
 gnus-topic-line-format "%i[%{ %n %}(%A / %g )%{]%} %v\n"
 gnus-suppress-duplicates t
)

;;
;; J'aime bien conserver des archives de mes envois.
;;
(setq gnus-message-archive-method
      '(nnfolder "archive"
		 (nnfolder-inhibit-expiry t)))

(setq gnus-message-archive-group
      '((if (message-news-p)
	    "sent-news"
	  "sent-mail")))


(custom-set-variables
 '(message-default-headers my-message-default-headers)
)

;; MIME
(setq gnus-use-tm t)
(require 'gnus-mime)
(setq gnus-show-mime t)
(add-hook 'mime/editor-mode-hook 'mime-editor/set-transfer-level-8bit)
(call-after-loaded
 'tm-view
 (function
  (lambda ()
    (require 'tm-pgp)
    )))

;;*=======================
;;* load  mailcrypt (XEmacs tool for pgp)
(autoload 'mc-install-write-mode "mailcrypt" nil t)
(autoload 'mc-install-read-mode "mailcrypt" nil t)
(add-hook 'message-mode-hook 'mc-install-write-mode)
(setq mc-encrypt-for-me t
      mc-passwd-timeout 6000)
;;*=======================
;;* mailcrypt-support for gnus
(add-hook 'gnus-summary-mode-hook 'mc-install-read-mode)

;;*=======================
;;* offer to pgp sign/encrypt outgoing mail/news
;; Modifié pour ne *pas* signer par défaut.
(defun krid-message-send-hook ()
  "Stuff to be done before sending"
  (when (not (y-or-n-p "NOT PGP-sign this message? "))
    (save-excursion
      (let (start end)
        (goto-char (point-min))
        (setq start (1+ (re-search-forward mail-header-separator)))
        (goto-char (point-max))
        (setq end (or (re-search-backward message-signature-separator nil t)
                      (point-max)))
        (when (< start end)
          (mc-pgp-sign-region start end))))))
;(add-hook 'message-send-hook 'krid-message-send-hook)

;; On garde les threads en un seul morceau meme si le sujet change
(setq gnus-gather-loose-threads t)
(setq gnus-thread-ignore-subject t)

(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)

(setq gnus-visible-headers
      "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^X-Newsreader:\\|^X-Mailer:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|^Approved:\\|^User-Agent:")



;; tout ça pour une signature...
(setq seb-sig-dir-base (expand-file-name "~/.sigs-"))

(setq message-signature t)

(setq gnus-posting-styles
      '((".*"
	 (signature-file (je-signe "en")))
	("^nn.+:lug"
	 (signature-file (je-signe "lug"))
;	 (signature-file (je-signe "fr"))
	 )
	("^fr.*"
	 (signature-file (je-signe "fr")))
	("^fr.misc.bavardages.*"
	 ("Approved" "eloignez les drosophiles !"))
	("^alt.sysadmin.recovery"
	 ("Approved" "probably"))
	))


;; scoring on
(setq gnus-use-scoring t)
;; On vire les articles qui sont vraiment trop mauvais
(setq gnus-summary-expunge-below -500)

;; On garde les scores tant qu'ils servent a quelque chose
(setq gnus-update-score-entry-dates t)

;; Le scoring adaptif
(setq gnus-summary-mark-below -300)
(setq gnus-use-adaptive-scoring t)
(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 -2))
    (gnus-read-mark (from 1) (subject 1))
    (gnus-expirable-mark)
    (gnus-killed-mark (from -1) (subject -3))
    (gnus-kill-file-mark)
    (gnus-ancient-mark (subject -1))
    (gnus-low-score-mark (subject -3) (from -2))
    (gnus-catchup-mark (from -1) (subject -1))))

;; On zappe les scores trop faibles dans le summary buffer
(setq gnus-summary-zcore-fuzz 100)

;; traitement du courrier
;; Les mailbox de gnus
(setq nnfolder-directory "~/.gnus.mail/")
(setq nnfolder-active-file "~/News/nnfolder.active")
(setq nnfolder-newsgroups-file "~/News/nnfolder.newsgroups")
(setq nnfolder-get-new-mail t)
;; nnfolder
(setq gnus-secondary-select-methods 
      '((nnfolder "")))
(setq gnus-permanently-visible-groups "^nnfolder")

;; On ne recupere pas le courrier, on laisse faire fetchmail
(setq nnmail-spool-file 'procmail)

;; Procmail met le courrier dans ~/mail/
(setq nnmail-procmail-directory "~/.gnus.in/")

;; Les mailbox ont le meme nom dans les deux repertoires
(setq nnmail-procmail-suffix "")


;; Gnus demande automatiquement si je veux m'inscrire a tout nouveau groupe
;(setq gnus-subscribe-newsgroup-method `gnus-subscribe-interactively)

;; Tant qu'on y est, on vire automatiquement les vieux groupes disparus
;(setq gnus-check-bogus-newsgroups t)