* .emacs.d/lisp/bandali-gnus.el: Decode application/gzip attachments.
[~bandali/configs] / .emacs.d / lisp / bandali-gnus.el
index febf30f..2ca03e4 100644 (file)
 
  gnus-select-method '(nnnil "")
  gnus-secondary-select-methods
 
  gnus-select-method '(nnnil "")
  gnus-secondary-select-methods
- `(,@(cond
-      ((string= (system-name) "langa")
+ `(,@(if (string= (system-name) "darya")
+         '((nnimap
+            "canonical"
+            (nnimap-stream plain)
+            (nnimap-address "127.0.0.1")
+            (nnimap-server-port 143)
+            (nnimap-authenticator plain)
+            (nnimap-user "bandali@canonical.local")))
        '((nnimap
           "kelar"
           (nnimap-stream plain)
        '((nnimap
           "kelar"
           (nnimap-stream plain)
@@ -75,6 +81,8 @@
            (|
             ;; (: gnus-registry-split-fancy-with-parent)
             ;; (: gnus-group-split-fancy "INBOX" t "INBOX")
            (|
             ;; (: gnus-registry-split-fancy-with-parent)
             ;; (: gnus-group-split-fancy "INBOX" t "INBOX")
+            ;; spam
+            ("X-Spam_action" "reject" "Junk")
             ;; keep debbugs emails in INBOX
             (list ".*<\\(.*\\)\\.debbugs\\.gnu\\.org>.*" "INBOX")
             ;; list moderation emails
             ;; keep debbugs emails in INBOX
             (list ".*<\\(.*\\)\\.debbugs\\.gnu\\.org>.*" "INBOX")
             ;; list moderation emails
@@ -83,6 +91,8 @@
             (list ".*<\\(.*\\)\\.\\(non\\)?gnu\\.org>.*" "l.\\1")
             ;; fsf
             (list ".*<\\(.*\\)\\.fsf\\.org>.*" "l.\\1")
             (list ".*<\\(.*\\)\\.\\(non\\)?gnu\\.org>.*" "l.\\1")
             ;; fsf
             (list ".*<\\(.*\\)\\.fsf\\.org>.*" "l.\\1")
+            ;; debian
+            (list ".*<\\(.*\\)\\.alioth-lists\\.debian\\.net>.*" "l.\\1")
             ;; gnus
             (list ".*<\\(.*\\)\\.gnus\\.org>.*" "l.\\1")
             ;; libreplanet
             ;; gnus
             (list ".*<\\(.*\\)\\.gnus\\.org>.*" "l.\\1")
             ;; libreplanet
             ;; ----------------------------------
             ;; legend: (u)nsubscribed | (d)ead
             ;; ----------------------------------
             ;; ----------------------------------
             ;; legend: (u)nsubscribed | (d)ead
             ;; ----------------------------------
-            ;; spam
-            ("X-Spam_action" "reject" "Junk")
             ;; otherwise, leave mail in INBOX
             "INBOX")))
          (nnimap
             ;; otherwise, leave mail in INBOX
             "INBOX")))
          (nnimap
             ;; spam
             ("X-Spam-Flag" "YES" "Junk")
             ;; catch-all
             ;; spam
             ("X-Spam-Flag" "YES" "Junk")
             ;; catch-all
-            "INBOX")))))
-      ((string= (system-name) "jirud")
-       '((nnimap
-         "sfl"
-         (nnimap-stream tls)
-         (nnimap-address "mail.savoirfairelinux.com")
-         (nnimap-user "amin.bandali"))))))
+            "INBOX")))
+         (nnimap
+          "sfl"
+          (nnimap-stream plain)
+          (nnimap-address "127.0.0.1")
+          (nnimap-server-port 143)
+          (nnimap-authenticator plain)
+          (nnimap-user "amin.bandali@savoirfairelinux.local")))))
  gnus-message-archive-group "nnimap+gnu:INBOX"
  gnus-parameters
  '(("l\\.deepspec"
  gnus-message-archive-group "nnimap+gnu:INBOX"
  gnus-parameters
  '(("l\\.deepspec"
     (to-list    . "haskell-cafe@haskell.org")
     (list-identifier . "\\[Haskell-cafe\\]"))
    ("gnu.*"
     (to-list    . "haskell-cafe@haskell.org")
     (list-identifier . "\\[Haskell-cafe\\]"))
    ("gnu.*"
-    (gcc-self . t))
-   ;; ("l\\."
-   ;;  (subscribed . t))
-   ("nnimap\\+uwaterloo:.*"
     (gcc-self . t)))
  ;; nnimap-record-commands t
  ;; gnus-large-newsgroup  50
     (gcc-self . t)))
  ;; nnimap-record-commands t
  ;; gnus-large-newsgroup  50
   (add-hook 'gnus-group-mode-hook #'gnus-topic-mode)
   (add-hook 'gnus-group-mode-hook #'gnus-agent-mode))
 ;; global key bindings
   (add-hook 'gnus-group-mode-hook #'gnus-topic-mode)
   (add-hook 'gnus-group-mode-hook #'gnus-agent-mode))
 ;; global key bindings
-(global-set-key (kbd "C-c m") #'gnus-plugged)
-(global-set-key (kbd "C-c M") #'gnus-unplugged)
+(global-set-key (kbd "C-c g") #'gnus-plugged)
+(global-set-key (kbd "C-c G") #'gnus-unplugged)
 
 (with-eval-after-load 'gnus-art
   (setq
 
 (with-eval-after-load 'gnus-art
   (setq
                              ;; "^References:"
                              "^List-Id:"
                              "^Gnus-Warning:")
                              ;; "^References:"
                              "^List-Id:"
                              "^Gnus-Warning:")
-   gnus-visible-headers (mapconcat 'identity
+   gnus-visible-headers (mapconcat #'identity
                                    gnus-sorted-header-list
                                    "\\|")
   ;; local-lapsed article dates
                                    gnus-sorted-header-list
                                    "\\|")
   ;; local-lapsed article dates
 
 (defvar b/sfl-p nil)
 (with-eval-after-load 'gnus-msg
 
 (defvar b/sfl-p nil)
 (with-eval-after-load 'gnus-msg
-  (defvar b/shemshak-signature "Amin Bandali
-https://shemshak.org/~bandali")
-  (defvar b/uwaterloo-signature "Amin Bandali, MMath
-https://shemshak.org/~bandali")
-  (defvar b/csc-signature "Amin Bandali (https://shemshak.org/~bandali)
-Systems Committee <syscom@csclub.uwaterloo.ca>
-Computer Science Club of the University of Waterloo")
-  (defvar b/sfl-signature "Amin Bandali
-Free Software Consultant
-Savoir-faire Linux
-jami:bandali")
+  (let ((bandali "Amin Bandali (https://kelar.org/~bandali)"))
+    (defvar b/csc-signature
+      (mapconcat
+       #'identity
+       `(,bandali
+         "Systems Committee <syscom@csclub.uwaterloo.ca>"
+         "Computer Science Club of the University of Waterloo")
+       "\n"))
+    (defvar b/sfl-signature
+      (mapconcat
+       #'identity
+       `(,bandali
+         "Volunteer, Savoir-faire Linux"
+         "jami:bandali")
+       "\n")))
   (setq
    gnus-message-replysign t
    gnus-posting-styles
    '((".*"
       (address "bandali@gnu.org")
       ("X-Message-SMTP-Method" "smtp fencepost.gnu.org 587"))
   (setq
    gnus-message-replysign t
    gnus-posting-styles
    '((".*"
       (address "bandali@gnu.org")
       ("X-Message-SMTP-Method" "smtp fencepost.gnu.org 587"))
-     ;; ("nnimap\\+gnu:l\\..*"
-     ;;  (signature nil))
      ((header "subject" "ThankCRM")
       (to "webmasters-comment@gnu.org")
      ((header "subject" "ThankCRM")
       (to "webmasters-comment@gnu.org")
-      (body "")
-      (eval (setq b/message-cite-say-hi nil)))
+      (body ""))
      ("nnimap\\+kelar:.*"
       (address "bandali@kelar.org")
       ("X-Message-SMTP-Method" "smtp mail.kelar.org 587")
      ("nnimap\\+kelar:.*"
       (address "bandali@kelar.org")
       ("X-Message-SMTP-Method" "smtp mail.kelar.org 587")
-      (body "\nBest,\n")
-      (gcc "nnimap+kelar:Sent")
-      (eval (setq b/message-cite-say-hi t)))
+      (gcc "nnimap+kelar:Sent"))
      ("nnimap\\+shemshak:.*"
       (address "amin@shemshak.org")
       ("X-Message-SMTP-Method" "smtp mail.shemshak.org 587")
      ("nnimap\\+shemshak:.*"
       (address "amin@shemshak.org")
       ("X-Message-SMTP-Method" "smtp mail.shemshak.org 587")
-      (body "\nBest,\n")
-      (signature b/shemshak-signature)
-      (gcc "nnimap+shemshak:Sent")
-      (eval (setq b/message-cite-say-hi t)))
-     ("nnimap\\+uwaterloo:.*"
-      (address "bandali@uwaterloo.ca")
-      ("X-Message-SMTP-Method" "smtp connect.uwaterloo.ca 587")
-      (body "\nBest,\n")
-      (signature b/uwaterloo-signature))
-     ("nnimap\\+uwaterloo:INBOX"
-      (gcc "\"nnimap+uwaterloo:Sent Items\""))
+      (gcc "nnimap+shemshak:Sent"))
+     ("nnimap\\+canonical:.*"
+      (address "amin.bandali@canonical.com")
+      ("X-Message-SMTP-Method" "smtp smtp.canonical.com 587")
+      (signature nil)
+      (gcc "nnimap+canonical:Sent"))
      ("nnimap\\+csc:.*"
       (address "bandali@csclub.uwaterloo.ca")
       ("X-Message-SMTP-Method" "smtp mail.csclub.uwaterloo.ca 587")
      ("nnimap\\+csc:.*"
       (address "bandali@csclub.uwaterloo.ca")
       ("X-Message-SMTP-Method" "smtp mail.csclub.uwaterloo.ca 587")
@@ -340,10 +339,10 @@ jami:bandali")
       (gcc "nnimap+csc:Sent"))
      ("nnimap\\+sfl:.*"
       (address "amin.bandali@savoirfairelinux.com")
       (gcc "nnimap+csc:Sent"))
      ("nnimap\\+sfl:.*"
       (address "amin.bandali@savoirfairelinux.com")
-      (signature b/sfl-signature)
       ("X-Message-SMTP-Method" "smtp mail.savoirfairelinux.com 587")
       ("X-Message-SMTP-Method" "smtp mail.savoirfairelinux.com 587")
-      (gcc "nnimap+sfl:Sent")
-      (eval (setq-local b/sfl-p t))))))
+      (signature b/sfl-signature)
+      (eval (setq-local b/sfl-p t))
+      (gcc "nnimap+sfl:Sent")))))
 ;; hooks
 ;; (with-eval-after-load 'gnus
 ;;   (add-hook 'gnus-message-setup-hook
 ;; hooks
 ;; (with-eval-after-load 'gnus
 ;;   (add-hook 'gnus-message-setup-hook
@@ -358,16 +357,15 @@ jami:bandali")
    gnus-topic-topology
    `(("Gnus" visible nil nil)
      (("misc" visible nil nil))
    gnus-topic-topology
    `(("Gnus" visible nil nil)
      (("misc" visible nil nil))
-     ,@(cond
-        ((string= (system-name) "jirud")
-         '((("sfl" visible nil nil))))
-        ((string= (system-name) "langa")
+     ,@(if (string= (system-name) "darya")
+           '((("canonical" visible nil nil)))
          '((("csc" visible nil nil))
            (("uwaterloo" visible nil nil))
            (("kelar" visible nil nil))
            (("shemshak" visible nil nil))
            (("gnu" visible nil nil))
          '((("csc" visible nil nil))
            (("uwaterloo" visible nil nil))
            (("kelar" visible nil nil))
            (("shemshak" visible nil nil))
            (("gnu" visible nil nil))
-           (("old-gnu" visible nil nil))))))))
+           (("old-gnu" visible nil nil))
+           (("sfl" visible nil nil)))))))
 
 (with-eval-after-load 'gnus-agent
   (setq gnus-agent-synchronize-flags 'ask))
 
 (with-eval-after-load 'gnus-agent
   (setq gnus-agent-synchronize-flags 'ask))
@@ -381,13 +379,22 @@ jami:bandali")
 (with-eval-after-load 'gnus-dired
   (add-hook 'dired-mode-hook 'gnus-dired-mode))
 
 (with-eval-after-load 'gnus-dired
   (add-hook 'dired-mode-hook 'gnus-dired-mode))
 
+(with-eval-after-load 'mm-archive
+  (add-to-list
+   'mm-archive-decoders
+   '("application/gzip" nil "gunzip" "-S" ".zip" "-kd" "%f" "-r")))
+
 (with-eval-after-load 'mm-decode
   (setq
    ;; mm-attachment-override-types `("text/x-diff" "text/x-patch"
    ;;                                ,@mm-attachment-override-types)
    mm-discouraged-alternatives '("text/html" "text/richtext")
    mm-decrypt-option 'known
 (with-eval-after-load 'mm-decode
   (setq
    ;; mm-attachment-override-types `("text/x-diff" "text/x-patch"
    ;;                                ,@mm-attachment-override-types)
    mm-discouraged-alternatives '("text/html" "text/richtext")
    mm-decrypt-option 'known
-   mm-verify-option 'known))
+   mm-verify-option 'known)
+  (add-to-list
+   'mm-inline-media-tests
+   `("application/gzip" mm-archive-dissect-and-inline identity))
+  (add-to-list 'mm-inlined-types "application/gzip" 'append))
 
 (with-eval-after-load 'mm-uu
   (when (version< "27" emacs-version)
 
 (with-eval-after-load 'mm-uu
   (when (version< "27" emacs-version)