diff options
| author | fpi | 2020-06-08 20:12:54 +0200 | 
|---|---|---|
| committer | fpi | 2020-06-08 20:12:54 +0200 | 
| commit | aa8bc3406304e2c898e7b96298677d7fea24363b (patch) | |
| tree | dd4ff337a9e1d3ca985ab4fc39a38230385b165f | |
| parent | Add org-roam-bibtex package (diff) | |
| parent | Fixes (diff) | |
Merge branch 'gnus+' into emacs
| -rw-r--r-- | emacs-private.el.gpg | bin | 1073 -> 1085 bytes | |||
| -rw-r--r-- | gnus.org | 197 | 
2 files changed, 173 insertions, 24 deletions
diff --git a/emacs-private.el.gpg b/emacs-private.el.gpg Binary files differindex b997400..a94dda3 100644 --- a/emacs-private.el.gpg +++ b/emacs-private.el.gpg @@ -11,21 +11,81 @@ Load private settings  (load secret-file)  #+end_src  * Config -#+begin_src emacs-lisp -;; (add-to-list 'gnus-secondary-select-methods +I use =imap= as my primary server. Setup some generic options: +#+begin_src emacs-lisp :noweb-ref imap :tangle no +nnimap ,private/imap-name +(nnimap-address ,private/imap-address) +(nnimap-server-port 993) +(nnimap-stream ssl) +(nnir-search-engine imap) +#+end_src +Only fetch partial articles. This saves time on opening messages with +large attachments. Load any text based parts and also load any +signature if the message is signed. Unfortunately to correctly verify +the signature the full message needs to be loaded, which is why I +disabled partial fetching for now. +#+begin_src emacs-lisp :noweb-ref imap :tangle no +;; (nnimap-fetch-partial-articles "\\(text/\\|signature\\)") +#+end_src +Set my default inbox folder. This is the folder mail is split out of. +#+begin_src emacs-lisp :noweb-ref imap :tangle no +(nnimap-inbox "INBOX") +#+end_src +Use fancy splitting and setup splitting rules. See [[info:gnus#Fancy Mail Splitting][info:gnus#Fancy Mail Splitting]] for details. +#+begin_src emacs-lisp :noweb-ref imap :tangle no +(nnimap-split-methods nnimap-split-fancy) +(nnimap-split-fancy + (| (: nnmail-split-fancy-with-parent) +    ,@private/imap-split-fancy +    "INBOX" +    )) +#+end_src + +Noweb the primary server settings together. +#+begin_src emacs-lisp :noweb yes  (setq gnus-select-method -             `(nnimap ,private/imap-name -                      (nnimap-address ,private/imap-address) -                      (nnimap-server-port 993) -                      (nnimap-stream ssl) -                      (nnir-search-engine imap))) +      `( +        <<imap>> +        )) +#+end_src +Add local nntp server +#+begin_src emacs-lisp +(add-to-list 'gnus-secondary-select-methods '(nntp "localhost" 4321))  #+end_src  Sort by newest first  #+begin_src emacs-lisp  (setq gnus-article-sort-functions '((not gnus-thread-sort-by-date))        gnus-thread-sort-functions  '((not gnus-thread-sort-by-date)))  #+end_src - +Gathering loose threads, whose parent is currently not displayed. I find the default ~'adopt~ to be too confusing. +#+begin_src emacs-lisp +(setq gnus-summary-make-false-root 'dummy) +(setq gnus-summary-dummy-line-format "  %(:                                    :%) %S +") +(setq gnus-summary-make-false-root-always t) +#+end_src +Also try to connect threads by guessing which articles are missing +#+begin_src emacs-lisp +(setq gnus-fetch-old-headers nil) +(setq gnus-build-sparse-threads 'more) +#+end_src +Better thread display (from [[https://www.emacswiki.org/emacs/GnusFormatting][emacswiki/GnusFormatting)]]. +#+begin_src emacs-lisp +(setq +     gnus-summary-line-format "%U%R%z %(%&user-date;  %-15,15f  %B%s%)\n" +     gnus-user-date-format-alist '((t . "%Y-%m-%d %H:%M")) +     gnus-summary-thread-gathering-function 'gnus-gather-threads-by-references +     gnus-sum-thread-tree-false-root "" +     gnus-sum-thread-tree-indent " " +     gnus-sum-thread-tree-leaf-with-other "├► " +     gnus-sum-thread-tree-root "" +     gnus-sum-thread-tree-single-leaf "╰► " +     gnus-sum-thread-tree-vertical "│") +#+end_src +Unicode reply symbol +#+begin_src emacs-lisp +(setq gnus-summary-to-prefix "→ ") +#+end_src  Sending mail  #+begin_src emacs-lisp :tangle no  (setq message-send-mail-function 'smtpmail-send-it @@ -36,6 +96,13 @@ Sending mail        smtpmail-smtp-service 587        starttls-use-gnutls t)  #+end_src +Setup for fancy mail splitting. Also see the parameters in ~gnus-select-method~. +#+begin_src emacs-lisp +(setq nnmail-split-methods 'nnimap-split-fancy) + +(setq nnmail-cache-accepted-message-ids t) +(setq nnmail-message-id-cache-length 10000) +#+end_src  Load only groups with level < 2 for faster startup.  #+begin_src emacs-lisp @@ -52,10 +119,70 @@ Save sent mails in my imap folder  #+end_src  Disable indenting a topic. I always do it by accident.  #+begin_src emacs-lisp -(define-key gnus-topic-mode-map (kbd "<tab>") nil) +(use-package gnus-topic +  :config +  (defun fpi/gnus-topic-toggle-topic () +    "Toggle display of the topic." +    (interactive) +    (when (gnus-group-topic-p) +      (if (equal 'visible +                 (nth 1 (cadr (gnus-topic-find-topology (gnus-current-topic))))) +          (gnus-topic-hide-topic) +        (gnus-topic-show-topic)))) +  (define-key gnus-topic-mode-map (kbd "<tab>") 'fpi/gnus-topic-toggle-topic) +  (define-key gnus-topic-mode-map (kbd "TAB") 'fpi/gnus-topic-toggle-topic)) +#+end_src +Function to toggle display of group levels in the group buffer. +#+begin_src emacs-lisp +(defvar gnus-group-line-format-wo-levels nil) +(defun fpi/gnus-group-toggle-levels () +  (interactive) +  (if gnus-group-line-format-wo-levels +      (setq gnus-group-line-format gnus-group-line-format-wo-levels +            gnus-group-line-format-wo-levels nil) +    (setq gnus-group-line-format-wo-levels gnus-group-line-format +          gnus-group-line-format (concat "[%L] " gnus-group-line-format))) +  ;; Hack to update display +  (gnus-group-get-new-news 0)) +(define-key gnus-topic-mode-map (kbd "T L") 'fpi/gnus-group-toggle-levels) +#+end_src +Enable responding to meeting invites. +#+begin_src emacs-lisp +(use-package gnus-icalendar +  :config +  (gnus-icalendar-setup) +  (setq gnus-icalendar-org-capture-file "~/win/Documents/sync/appointments.org") +  (setq gnus-icalendar-org-capture-headline '("Calendar")) ;;make sure to create Calendar heading first +  (gnus-icalendar-org-setup) +  ) +#+end_src +Enable message delaying (scheduling) +#+begin_src emacs-lisp +(gnus-delay-initialize) +#+end_src +Verify mail signatures with known protocols. +#+begin_src emacs-lisp +(setq mm-verify-option 'known) +#+end_src +Show buttons for result of signature verification & for multipart mails. To show the message fully buttonized use =K b= in the summary buffer. +#+begin_src emacs-lisp +(setq gnus-buttonized-mime-types '("multipart/signed" "multipart/alternative")) +#+end_src +Enable =mail-aliases= and create aliases for all mail adresses if an entry has multiple. +#+begin_src emacs-lisp +(add-hook 'message-setup-hook 'bbdb-mail-aliases) +(setq bbdb-mail-alias 'all) +#+end_src +Don't fetch attachments before showing the message text to avoid long load times with big attachments. +#+begin_src emacs-lisp +(setq nnimap-fetch-partial-articles "\\(text/\\|signature\\)") +#+end_src +Workaround for bug with ~gnus-cloud-method~ and ~custom-variable-recalc-variable~ upon reloading the =spacemacs-*= theme. +#+begin_src emacs-lisp +(setq server "nnimap:imsmail")  #+end_src  ** Adaptive scoring -See [[info:gnus#Adaptive Scoring][info:gnus#Adaptive Scoring]]. +See [[info:gnus#Adaptive Scoring][info:gnus#Adaptive Scoring]] and this [[https://notes.whatthefuck.computer/1417593600.0-note.html][blog post]] by Ryan Rix.  #+begin_src emacs-lisp  (setq gnus-use-adaptive-scoring '(word line))  (setq gnus-adaptive-word-length-limit 5) @@ -63,16 +190,22 @@ See [[info:gnus#Adaptive Scoring][info:gnus#Adaptive Scoring]].  (setq gnus-summary-mark-below -300)  (setq gnus-default-adaptive-score-alist        '((gnus-unread-mark) -         (gnus-ticked-mark) -         (gnus-dormant-mark) -         (gnus-del-mark (subject -1)) -         (gnus-read-mark (subject 2)) -         (gnus-expirable-mark (subject -1)) -         (gnus-killed-mark (subject -3)) -         (gnus-kill-file-mark) -         (gnus-ancient-mark) -         (gnus-low-score-mark) -         (gnus-catchup-mark (subject -1)))) +        (gnus-ticked-mark) +        (gnus-dormant-mark) +        (gnus-del-mark (subject -50)) +        (gnus-read-mark (from 5) (subject 100)) +        (gnus-expirable-mark) +        (gnus-killed-mark (subject -300)) +        (gnus-kill-file-mark) +        (gnus-ancient-mark) +        (gnus-low-score-mark) +        (gnus-catchup-mark (subject -40)))) +(setq gnus-default-adaptive-word-score-alist +      `((,gnus-read-mark . 5) +        (,gnus-catchup-mark . -5) +        (,gnus-killed-mark . -15) +        (,gnus-del-mark . -10))) +(setq gnus-adaptive-word-score-alist gnus-default-adaptive-word-score-alist)  #+end_src  Scoring List for Groups with various From Senders:  #+begin_example @@ -88,6 +221,17 @@ Scoring List for Groups with various From Senders:     (gnus-low-score-mark)     (gnus-catchup-mark (from -1) (subject -1)))  #+end_example +To ensure filenames compatible with Windows and stuff: +#+begin_src emacs-lisp +(setq nnheader-file-name-translation-alist '((?: . ?_) (?[ . ?_) (?] . ?_))) +#+end_src + +Slow scoring decay prevents huge scores from building up. Only run on =.ADAPT= score files and decay each scoring rule by 1 point or 1%, whichever is larger. +#+begin_src emacs-lisp +(setq gnus-decay-scores "\\.ADAPT\\'" +      gnus-score-decay-constant 1 +      gnus-score-decay-scale 0.01) +#+end_src  ** Window Layout  See [[info:gnus#Window Layout][info:gnus#Window Layout]].  #+begin_src emacs-lisp @@ -95,8 +239,8 @@ See [[info:gnus#Window Layout][info:gnus#Window Layout]].  #+end_src  ** Format Summary buffer lines  #+begin_src emacs-lisp -(setq gnus-summary-line-format "%U%R%z%I%(%[ %d : %-23,23f %]%) %s -") +;; (setq gnus-summary-line-format "%U%R%z%I%(%[ %d : %-23,23f %]%) %s +;; ")  #+end_src  ** nnreddit  #+begin_src emacs-lisp @@ -124,11 +268,16 @@ Background fetching for gnus. See the manual and [[https://www.emacswiki.org/ema    (gnus-demon-scan-news-level 2 nil))  (defun gnus-demon-scan-news-3 ()    (gnus-demon-scan-news-level 3 t)) +(defun gnus-demon-scan-news-4 () +  (gnus-demon-scan-news-level 4 t)) +(defun gnus-demon-scan-news-5 () +  (gnus-demon-scan-news-level 5 t))  (setq gnus-demon-timestep 10)  (gnus-demon-add-handler 'gnus-demon-scan-news-2 3 nil) -(gnus-demon-add-handler 'gnus-demon-scan-news-3 360 nil) -(gnus-demon-add-handler 'gnus-demon-scan-news-3 60 1) +(gnus-demon-add-handler 'gnus-demon-scan-news-3 60 t) +(gnus-demon-add-handler 'gnus-demon-scan-news-4 130 1) +(gnus-demon-add-handler 'gnus-demon-scan-news-5 140 1)  #+end_src  ** Modeline indicator  From the [[https://www.emacswiki.org/emacs/GnusNotify][emacswiki Gnus Notify]].  | 
