;; Display a slrn-like tree view in the summary window.
(setq gnus-use-trees nil)
(setq gnus-summary-make-false-root 'dummy)
-(setq gnus-summary-line-format "%U%R%z%4L %(%[%-16,16f%]%): %B %s\n"
- gnus-summary-dummy-line-format " %(%[----------------%]%): * %S\n")
+(setq gnus-summary-line-format
+ "%U%R%z%4L %(%[%-16,16f%]%): %&user-date; %B %s\n"
+ gnus-summary-dummy-line-format
+ " %(%[----------------%]%): * %S\n"
+ gnus-user-date-format-alist
+ '(((gnus-seconds-today) . "*** %H:%M")
+ (604800 . "%a %H:%M")
+ ((gnus-seconds-month) . " %a %_d")
+ ((gnus-seconds-year) . " %_d %b")
+ (t . " %b %Y")))
(setq gnus-sum-thread-tree-root ">"
gnus-sum-thread-tree-false-root ">"
gnus-sum-thread-tree-single-indent "="
;; Sort threads in a useful way.
(setq gnus-thread-sort-functions
- '(gnus-thread-sort-by-number
- gnus-thread-sort-by-subject
- gnus-thread-sort-by-total-score))
+ '(gnus-thread-sort-by-number
+ gnus-thread-sort-by-subject
+ gnus-thread-sort-by-total-score))
;; Configure the crypto.
(setq mm-verify-option 'known
gnus-check-bogus-newsgroups nil
gnus-read-active-file 'ask-server)
+;; Don't skip unread groups.
+(setq gnus-group-goto-unread nil
+ gnus-summary-next-group-on-exit nil)
+
;; Use one article buffer per group.
(setq gnus-single-article-buffer nil)
" ")))
(add-hook 'gnus-article-mode-hook #'mdw-gnus-article-setup)
+;; Don't expire articles on selection if they're alread read. This provides
+;; a handy way to prevent expiry, and actually forcing expiry isn't
+;; significantly harder.
+(remove-hook 'gnus-mark-article-hook
+ 'gnus-summary-mark-read-and-unread-as-read)
+(add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read)
+
+;; Leave an oubliette level 7 for broken things which look like mailboxes.
+;; Otherwise Gnus keeps on resurrecting them and later realising that they're
+;; bogus.
+(setq gnus-level-unsubscribed 6)
+
+;; Reconfigure the `nnmail-split-fancy' syntax table to be less mad.
+(setq nnmail-split-fancy-syntax-table
+ (let ((table (make-syntax-table)))
+
+ ;; This is from upstream. I don't know what it's for.
+ (modify-syntax-entry ?% "." table)
+
+ ;; Email addresses are often wrapped in `<...>', so don't consider
+ ;; those to be part of the address.
+ (modify-syntax-entry ?< "(>" table)
+ (modify-syntax-entry ?> ")<" table)
+
+ ;; Email addresses definitely contain `.'.
+ (modify-syntax-entry ?. "_" table)
+
+ ;; Done.
+ table))
+
;;;--------------------------------------------------------------------------
;;; Magic for sending mail the correct way.