Gnus
Gnus es el lector de email y noticias de Emacs. Lo cierto es que es algo dificil de configurar, pero nada que no se pueda resolver leyendo la extensa documentación que viene con Emacs. Puedes configurar los colores, las asignaciones de teclas, el sumario de mensajes, etc. Puedes es el aspecto que tiene Gnus leyendo el grupo comp.emacs aquí.
Mi archivo .gnus
;;; Configuración general
(setq mail-sources '((pop :server "pop3.example.com"
:user "me"
:password "foo")))
(setq gnus-select-method '(nnfolder "Inbox"
(nnfolder-directory "~/Mail/")
(nnfolder-get-new-mail t)
(nnfolder-inhibit-expiry t))
;; skar es un servidor local con leafnode
gnus-secondary-select-methods '((nntp "skar" (nntp-address "skar")))
gnus-secondary-servers '(("skar" nntp "skar" (nntp-address "skar")))
gnus-message-archive-group '((if (message-news-p) "News" "Outbox"))
gnus-message-archive-method '(nnfolder "Outbox"
(nnfolder-directory "~/Mail/")
(nnfolder-get-new-mail nil)
(nnfolder-inhibit-expiry t))
nnmail-split-methods '(("Inbox" ""))
nnmail-treat-duplicates nil)
;;; Variables personalizadas
(setq gnus-use-cache t
gnus-save-newsrc-file nil
nntp-connection-timeout 5
mail-source-delete-incoming t
gnus-read-active-file nil ; lee el fichero de grupos del servidor
gnus-save-killed-list t ; guarda los nombres de los grupos
gnus-check-new-newsgroups nil
gnus-auto-select-first nil
gnus-keep-backlog 50
gnus-large-newsgroup 500
gnus-asynchronous t
gnus-use-article-prefetch 500
gnus-use-adaptive-scoring t
gnus-home-adapt-file "adapt.SCORE"
gnus-home-score-file "all.SCORE"
gnus-thread-indent-level 2
headers-list '("From:" "Organization:" "Newsgroups:"
"X-Mailer" "X-Newsreader:" "User-Agent:")
gnus-visible-headers headers-list
gnus-sorted-header-list headers-list
gnus-group-line-format "%M%S%P%8y: %(%-40G%) %2{%d%} %l \n"
gnus-summary-line-format
"%U%R%z: %2{%d%} %3{%[%4L%]%} %1{%-18,18n%} %4{%ua%} %(%I%-50,50s%)\n"
gnus-summary-same-subject "+->"
gnus-server-line-format " {%(%h:%w%)} %s - %n\n"
gnus-permanently-visible-groups "Inbox\\|Outbox\\|News")
;; Message variables
(setq message-kill-buffer-on-exit t
message-cite-function 'message-cite-original-without-signature)
(add-hook 'gnus-article-mode-hook '(lambda () (setq truncate-lines nil)))
(add-hook 'message-mode-hook
(lambda () (auto-fill-mode 1) (setq fill-column 60)))
(add-hook 'gnus-save-quick-newsrc-hook
(lambda () (set (make-local-variable 'backup-inhibited) t)))
;;; Teclas
(add-hook 'gnus-summary-mode-hook
'(lambda ()
(local-set-key "v" 'gnus-summary-catchup-and-goto-next-group)
(local-set-key [?\C-x ?i] 'delete-other-windows)
(local-set-key [up] '(lambda ()
(interactive)
(when (> (count-windows) 1)
(delete-other-windows))
(previous-line 1)))
(local-set-key [down] '(lambda ()
(interactive)
(when (> (count-windows) 1)
(delete-other-windows))
(next-line 1)))
(local-set-key [\C-return] '(lambda ()
(interactive)
(gnus-summary-next-page)))))
;; Esta función se usa gnus-summary-line-format
(defun gnus-user-format-function-a (header)
(let ((myself "<u[0-9a-z]+\\.fsf@terra.es>")
(references (mail-header-references header))
(message-id (mail-header-id header)))
(if (or (and (stringp references)
(string-match myself references))
(and (stringp message-id)
(string-match myself message-id)))
"X" "|")))
;;; Colores usados en summary-mode-line
(copy-face 'default 'face-1)
(set-face-foreground 'face-1 "steelblue")
(setq gnus-face-1 'face-1)
(copy-face 'default 'face-2)
(set-face-foreground 'face-2 "lime green")
(setq gnus-face-2 'face-2)
(copy-face 'default 'face-3)
(set-face-foreground 'face-3 "pink")
(setq gnus-face-3 'face-3)
(copy-face 'default 'face-4)
(set-face-foreground 'face-4 "firebrick")
(setq gnus-face-4 'face-4)
(copy-face 'default 'face-5)
(set-face-foreground 'face-5 "wheat")
(setq gnus-summary-high-unread-face 'face-5)