[emacs/message] create simplified In-Reply-To headers
[~bandali/configs] / init.org
index 2cd7564..fd734b1 100644 (file)
--- a/init.org
+++ b/init.org
@@ -1,4 +1,4 @@
-#+title: =aminb='s Literate Emacs Configuration
+#+title: Literate Emacs Configuration of Amin Bandali
 #+author: Amin Bandali
 #+babel: :cache yes
 #+property: header-args :tangle yes
@@ -33,6 +33,9 @@ few months, but decided to try =straight.el= which allows direct use
 of the various package archives.
 
 ** Installation
+:PROPERTIES:
+:CUSTOM_ID: installation
+:END:
 
 To use this config for your Emacs, first you need to clone this repo,
 then tangle =init.org= into =init.el=, and optionally byte-compile
@@ -46,12 +49,7 @@ cd ~/.emacs.d
 #+end_src
 
 Then, decide if you would like to use a byte-compiled init file, and
-set the following variable accordingly:
-
-#+begin_src emacs-lisp
-(defvar a/byte-compiled-init t
-  "If non-nil, byte-(re)compile init.el on successful tangles.")
-#+end_src
+set the [[#byte-compiled-init][a/byte-compiled-init]] variable accordingly.
 
 Now, first tangle =init.org=, and only if you chose to have a
 byte-compiled init, build init as well:
@@ -139,6 +137,21 @@ file.
 :CUSTOM_ID: initial-setup
 :END:
 
+** Byte-compiled init preference
+:PROPERTIES:
+:CUSTOM_ID: byte-compiled-init
+:END:
+
+If you would like a byte-compiled init file, set the following
+variable to ~t~, otherwise set it to ~nil~.
+
+#+begin_src emacs-lisp
+(defvar a/byte-compiled-init t
+  "If non-nil, byte-(re)compile init.el on successful tangles.")
+#+end_src
+
+You can click on [[#installation][Installation]] to jump back up there if you like :)
+
 ** Emacs initialization
 
 I'd like to do a couple of measurements of Emacs' startup time. First,
@@ -201,7 +214,7 @@ but for now I've decided to keep them enabled. See documentation for
 
 #+begin_src emacs-lisp
 (setq user-full-name "Amin Bandali"
-      user-mail-address "amin@aminb.org")
+      user-mail-address "amin@bndl.org")
 #+end_src
 
 ** Package management
@@ -792,6 +805,9 @@ Some bindings for functions from built-in GNU Emacs packages:
 
  ("s-p"     . beginning-of-buffer)
  ("s-n"     . end-of-buffer))
+
+(when (display-graphic-p)
+  (unbind-key "C-z" global-map))
 #+end_src
 
 While at it, let's bind a few for some =straight-*= functions too:
@@ -1203,7 +1219,8 @@ There's no way I could top that, so I won't attempt to.
       ("emacs"
        (or
         (name . "^\\*scratch\\*$")
-        (name . "^\\*Messages\\*$"))))))
+        (name . "^\\*Messages\\*$")))
+      ("erc" (mode . erc-mode)))))
   (ibuffer-formats
    '((mark modified read-only locked " "
            (name 18 18 :left :elide)
@@ -1887,6 +1904,7 @@ Emacs package that displays available keybindings in popup
     "C-x v"   "version control"
     ;; prefixes for my personal bindings
     "C-c a"   "applications"
+    "C-c a e" "erc"
     "C-c a s" "shells"
     "C-c p"   "package-management"
     "C-c p e" "package-management/epkg"
@@ -2276,13 +2294,19 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
             (nnimap-address "127.0.0.1")
             (nnimap-server-port 143)
             (nnimap-authenticator plain)
-            (nnimap-user "amin@aminb.org"))
+            (nnimap-user "amin@bndl.org"))
      (nnimap "uwaterloo"
              (nnimap-stream plain)
              (nnimap-address "127.0.0.1")
              (nnimap-server-port 143)
              (nnimap-authenticator plain)
-             (nnimap-user "abandali@uwaterloo.ca")))
+             (nnimap-user "abandali@uwaterloo.ca"))
+     (nnimap "csclub"
+             (nnimap-stream plain)
+             (nnimap-address "127.0.0.1")
+             (nnimap-server-port 143)
+             (nnimap-authenticator plain)
+             (nnimap-user "abandali@csclub.uw")))
    gnus-message-archive-group "nnimap+amin:Sent"
    gnus-parameters
    '(("gnu.*"
@@ -2349,21 +2373,26 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
   :config
   (setq gnus-posting-styles
         '((".*"
-           (address "amin@aminb.org")
+           (address "amin@bndl.org")
            (body "\nBest,\namin\n")
            (eval (setq a/message-cite-say-hi t)))
           ("gnu.*"
-           (address "bandali@gnu.org"))
+           (address "bandali@gnu.org")
+           (eval (set (make-local-variable 'message-user-fqdn) "fencepost.gnu.org")))
           ((header "subject" "ThankCRM")
            (to "webmasters-comment@gnu.org")
            (body "\nAdded  to 2019supporters.html.\n\nMoving to campaigns.\n\n-amin\n")
            (eval (setq a/message-cite-say-hi nil)))
           ("nnimap\\+uwaterloo:.*"
            (address "abandali@uwaterloo.ca")
-           (gcc "\"nnimap+uwaterloo:Sent Items\"")))))
+           (gcc "\"nnimap+uwaterloo:Sent Items\""))
+          ("nnimap\\+csclub:.*"
+           (address "abandali@csclub.uwaterloo.ca")
+           (gcc "nnimap+csclub:Sent")))))
 
 (use-feature gnus-topic
-  :hook (gnus-group-mode . gnus-topic-mode))
+  :hook (gnus-group-mode . gnus-topic-mode)
+  :config (setq gnus-topic-line-format "%i[ %A: %(%{%n%}%) ]%v\n"))
 
 (use-feature gnus-agent
   :config
@@ -2395,6 +2424,16 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 #+begin_src emacs-lisp
 (use-feature message
   :config
+  ;; redefine for a simplified In-Reply-To header
+  ;; (see https://todo.sr.ht/~sircmpwn/lists.sr.ht/67)
+  (defun message-make-in-reply-to ()
+    "Return the In-Reply-To header for this message."
+    (when message-reply-headers
+      (let ((from (mail-header-from message-reply-headers))
+               (msg-id (mail-header-id message-reply-headers)))
+        (when from
+          msg-id))))
+
   (defconst a/message-cite-style-format "On %Y-%m-%d %l:%M %p, %N wrote:")
   (defconst message-cite-style-bandali
     '((message-cite-function  'message-cite-original)
@@ -2413,8 +2452,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
         message-send-mail-function 'message-send-mail-with-sendmail
         message-sendmail-envelope-from 'header
         message-dont-reply-to-names
-        "\\(\\(.*@aminb\\.org\\)\\|\\(amin@bandali\\.me\\)\\|\\(\\(aminb?\\|mab\\|bandali\\)@gnu\\.org\\)\\|\\(\\(m\\|a\\(min\\.\\)?\\)bandali@uwaterloo\\.ca\\)\\)"
-        message-user-fqdn "aminb.org")
+        "\\(\\(amin@bndl\\.org\\)\\|\\(.*@\\(aminb\\|amin\\.bndl\\)\\.org\\)\\|\\(\\(bandali\\|aminb?\\|mab\\)@gnu\\.org\\)\\|\\(a\\(min\\.\\)?bandali@uwaterloo\\.ca\\)\\|\\(abandali@csclub\\.uwaterloo\\.ca\\)\\)")
   (require 'company-ebdb)
   :hook (;; (message-setup . mml-secure-message-sign-pgpmime)
          (message-mode . flyspell-mode)
@@ -2537,6 +2575,30 @@ Convenient footnotes in =message-mode=.
     (gnus-harvest-install)))
 #+end_src
 
+* IRC
+:PROPERTIES:
+:CUSTOM_ID: irc
+:END:
+
+Now with ERC!
+
+#+begin_src emacs-lisp
+(use-package znc
+  :straight (:host nil :repo "https://git.bndl.org/amin/znc.el")
+  :bind (("C-c a e e" . znc-erc)
+         ("C-c a e a" . znc-all))
+  :config
+  (let ((pwd (let ((auth (auth-source-search :host "znca")))
+               (cond
+                ((null auth) (error "Couldn't find znca's authinfo"))
+                (t (funcall (plist-get (car auth) :secret)))))))
+    (setq znc-servers
+          `(("znc.bndl.org" 1337 t
+             ((freenode "amin/freenode" ,pwd)))
+            ("znc.bndl.org" 1337 t
+             ((moznet "amin/moznet" ,pwd)))))))
+#+end_src
+
 * Blogging
 :PROPERTIES:
 :CUSTOM_ID: blogging