[emacs] update packages
[~bandali/configs] / init.org
index 83ae614..ee75041 100644 (file)
--- a/init.org
+++ b/init.org
@@ -297,6 +297,20 @@ integration, we will define a =use-feature= for plain ole
      ,@args))
 #+end_src
 
+Also, here's a useful function for reloading the init file (useful
+after running =straight-check-all=:
+
+#+begin_src emacs-lisp
+(defun a/reload-init ()
+  "Reload init.el."
+  (interactive)
+  (straight-transaction
+    (straight-mark-transaction-as-init)
+    (load (if a/byte-compiled-init
+              (concat (file-name-sans-extension user-init-file) ".elc")
+            user-init-file))))
+#+end_src
+
 *** =use-package=
 
 #+begin_quote
@@ -320,9 +334,10 @@ and without compromising on performance.
         use-package-expand-minimally t))
 
 (setq use-package-always-defer t)
+(require 'bind-key)
 #+end_src
 
-*** Epkg
+*** COMMENT Epkg
 
 #+begin_quote
 Browse the Emacsmirror package database
@@ -333,7 +348,6 @@ database, low-level functions for querying the database, and a
 =package.el=-like user interface for browsing the available packages.
 
 #+begin_src emacs-lisp
-(require 'bind-key)
 (use-package epkg
   :commands (epkg-list-packages epkg-describe-package)
   :bind
@@ -400,7 +414,7 @@ in my shell.
 
 #+begin_src emacs-lisp
 (use-package exec-path-from-shell
-  :defer 1
+  :defer 0.4
   :init
   (setq exec-path-from-shell-arguments           nil
         exec-path-from-shell-check-startup-files nil)
@@ -431,7 +445,7 @@ See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.htm
 
 #+begin_src emacs-lisp
 (use-feature server
-  :defer 1
+  :defer 0.4
   :config (or (server-running-p) (server-mode)))
 #+end_src
 
@@ -507,14 +521,14 @@ buffers and/or modes.
       scroll-preserve-screen-position 1)
 
 (use-feature mwheel
-  :defer 1
+  :defer 0.4
   :config
   (setq mouse-wheel-scroll-amount '(1 ((shift) . 1)) ; one line at a time
         mouse-wheel-progressive-speed nil            ; don't accelerate scrolling
         mouse-wheel-follow-mouse t))                 ; scroll window under mouse
 
 (use-feature pixel-scroll
-  :defer 1
+  :defer 0.4
   :config (pixel-scroll-mode 1))
 #+end_src
 
@@ -820,7 +834,8 @@ While at it, let's bind a few for some =straight-*= functions too:
  ("f" . straight-freeze-versions)
  ("t" . straight-thaw-versions)
  ("P" . straight-prune-build)
- ("r" . straight-get-recipe)
+ ("g" . straight-get-recipe)
+ ("r" . a/reload-init)
  ;; M-x ^straight-.*-all$
  ("a c" . straight-check-all)
  ("a f" . straight-fetch-all)
@@ -873,41 +888,6 @@ system.
 
 In short, my favourite way of life.
 
-First, we have to resort to a [[https://github.com/raxod502/straight.el#installing-org-with-straightel][hack]] to be able to use the correct
-latest version of Org from upstream.
-
-#+begin_src emacs-lisp
-  (use-package git)
-
-  (defun org-git-version ()
-    "The Git version of org-mode.
-  Inserted by installing org-mode or when a release is made."
-    (require 'git)
-    (let ((git-repo (expand-file-name
-                     "straight/repos/org/" user-emacs-directory)))
-      (string-trim
-       (git-run "describe"
-                "--match=release\*"
-                "--abbrev=6"
-                "HEAD"))))
-
-  (defun org-release ()
-    "The release version of org-mode.
-  Inserted by installing org-mode or when a release is made."
-    (require 'git)
-    (let ((git-repo (expand-file-name
-                     "straight/repos/org/" user-emacs-directory)))
-      (string-trim
-       (string-remove-prefix
-        "release_"
-        (git-run "describe"
-                 "--match=release\*"
-                 "--abbrev=0"
-                 "HEAD")))))
-
-(provide 'org-version)
-#+end_src
-
 We will use the =org-plus-contrib= package to get the whole deal:
 
 #+begin_src emacs-lisp
@@ -918,23 +898,29 @@ And here's where my actual Org configurations begin:
 
 #+begin_src emacs-lisp
 (use-feature org
-  :defer 2
+  :defer 0.5
   :config
   (setq org-src-tab-acts-natively t
         org-src-preserve-indentation nil
         org-edit-src-content-indentation 0
-        org-email-link-description-format "Email %c: %s" ; %.30s
+        org-link-email-description-format "Email %c: %s" ; %.30s
         org-highlight-latex-and-related '(entities)
         org-use-speed-commands t
         org-startup-folded 'content
         org-catch-invisible-edits 'show-and-error
         org-log-done 'time)
   (add-to-list 'org-structure-template-alist '("L" . "src emacs-lisp") t)
-  :bind (:map org-mode-map ("M-L" . org-insert-last-stored-link))
+  :bind
+  (("C-c a o a" . org-agenda)
+   :map org-mode-map
+   ("M-L" . org-insert-last-stored-link))
   :hook ((org-mode . org-indent-mode)
          (org-mode . auto-fill-mode)
          (org-mode . flyspell-mode))
   :custom
+  (org-agenda-files '("~/usr/org/todos/personal.org"
+                      "~/usr/org/todos/masters.org"))
+  (org-agenda-start-on-weekday 0)
   (org-latex-packages-alist '(("" "listings") ("" "color")))
   :custom-face
   '(org-block-begin-line ((t (:foreground "#5a5b5a" :background "#1d1f21"))))
@@ -1027,7 +1013,7 @@ Not just how I do git, but /the/ way to do git.
 
 #+begin_src emacs-lisp
 (use-package magit
-  :defer 2
+  :defer 0.5
   :bind (("C-x g" . magit-status)
          ("s-g s" . magit-status)
          ("s-g l" . magit-log-buffer-file))
@@ -1051,7 +1037,7 @@ Recently opened files.
 
 #+begin_src emacs-lisp
 (use-feature recentf
-  :defer 0.5
+  :defer 0.2
   :config
   (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:")
   (setq recentf-max-saved-items 40))
@@ -1082,7 +1068,7 @@ There's no way I could top that, so I won't attempt to.
 
 #+begin_src emacs-lisp
 (use-package ivy
-  :defer 0.6
+  :defer 0.3
   :bind
   (:map ivy-minibuffer-map
    ([escape] . keyboard-escape-quit)
@@ -1130,7 +1116,7 @@ There's no way I could top that, so I won't attempt to.
 
 #+begin_src emacs-lisp
 (use-feature eshell
-  :defer 2
+  :defer 0.5
   :commands eshell
   :bind ("C-c a s e" . eshell)
   :config
@@ -1413,7 +1399,7 @@ Automatically save place in each file.
 
 #+begin_src emacs-lisp
 (use-package company
-  :defer 3
+  :defer 0.6
   :bind
   (:map company-active-map
         ([tab]    . company-complete-common-or-cycle)
@@ -1432,7 +1418,7 @@ Automatically save place in each file.
 
 #+begin_src emacs-lisp
 (use-package flycheck
-  :defer 3
+  :defer 0.6
   :hook (prog-mode . flycheck-mode)
   :bind
   (:map flycheck-mode-map
@@ -1447,7 +1433,7 @@ Automatically save place in each file.
 
 ;; http://endlessparentheses.com/ispell-and-apostrophes.html
 (use-package ispell
-  :defer 3
+  :defer 0.6
   :config
   ;; ’ can be part of a word
   (setq ispell-local-dictionary-alist
@@ -1509,7 +1495,7 @@ Automatically save place in each file.
 #+begin_src emacs-lisp
 (eval-when-compile (defvar lean-mode-map))
 (use-package lean-mode
-  :defer 1
+  :defer 0.4
   :bind (:map lean-mode-map
               ("S-SPC" . company-complete))
   :config
@@ -1834,7 +1820,7 @@ treemacs
   :after (treemacs))
 #+end_src
 
-*** eclim
+*** COMMENT eclim
 
 #+begin_src emacs-lisp
 (use-package eclim
@@ -1888,7 +1874,7 @@ Emacs package that displays available keybindings in popup
 
 #+begin_src emacs-lisp
 (use-package which-key
-  :defer 1
+  :defer 0.4
   :config
   (which-key-add-key-based-replacements
     ;; prefixes for global prefixes and minor modes
@@ -1905,9 +1891,10 @@ Emacs package that displays available keybindings in popup
     ;; prefixes for my personal bindings
     "C-c a"   "applications"
     "C-c a e" "erc"
+    "C-c a o" "org"
     "C-c a s" "shells"
     "C-c p"   "package-management"
-    "C-c p e" "package-management/epkg"
+    ;; "C-c p e" "package-management/epkg"
     "C-c p s" "straight.el"
     "C-c psa" "all"
     "C-c psp" "package"
@@ -2003,7 +1990,7 @@ Emacs package that displays available keybindings in popup
 
 #+begin_src emacs-lisp
 (use-package crux                       ; results in Waiting for git... [2 times]
-  :defer 1
+  :defer 0.4
   :bind (("C-c b k" . crux-kill-other-buffers)
          ("C-c d"   . crux-duplicate-current-line-or-region)
          ("C-c D"   . crux-duplicate-and-comment-current-line-or-region)
@@ -2049,7 +2036,7 @@ Emacs package that displays available keybindings in popup
 
 #+begin_src emacs-lisp
 (use-package helpful
-  :defer 3
+  :defer 0.6
   :bind
   (("C-S-h c" . helpful-command)
    ("C-S-h f" . helpful-callable)        ; helpful-function
@@ -2064,7 +2051,7 @@ Make =*scratch*= and =*Messages*= unkillable.
 
 #+begin_src emacs-lisp
 (use-package unkillable-scratch
-  :defer 3
+  :defer 0.6
   :config
   (unkillable-scratch 1)
   :custom
@@ -2081,7 +2068,7 @@ Make =*scratch*= and =*Messages*= unkillable.
 
 #+begin_src emacs-lisp
 (use-package boxquote
-  :defer 3
+  :defer 0.6
   :bind
   (:prefix-map a/boxquote-prefix-map
    :prefix "C-c q"
@@ -2121,7 +2108,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
 #+begin_src emacs-lisp
 (use-package typo
-  :defer 2
+  :defer 0.5
   :config
   (typo-global-mode 1)
   :hook (text-mode . typo-mode))
@@ -2131,7 +2118,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
 #+begin_src emacs-lisp
 (use-package hl-todo
-  :defer 4
+  :defer 0.5
   :config
   (global-hl-todo-mode))
 #+end_src
@@ -2140,7 +2127,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
 #+begin_src emacs-lisp
 (use-package shrink-path
-  :defer 2
+  :defer 0.5
   :after eshell
   :config
   (defun +eshell/prompt ()
@@ -2180,7 +2167,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
 #+begin_src emacs-lisp
 (use-package multi-term
-  :defer 3
+  :defer 0.6
   :bind (("C-c a s m" . multi-term-dedicated-toggle)
          :map term-mode-map
          ("C-c C-j" . term-char-mode)
@@ -2252,7 +2239,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
 #+begin_src emacs-lisp
 (use-package yasnippet
-  :defer 3
+  :defer 0.6
   :config
   (defconst yas-verbosity-cur yas-verbosity)
   (setq yas-verbosity 2)
@@ -2309,8 +2296,79 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
              (nnimap-user "abandali@csclub.uw")))
    gnus-message-archive-group "nnimap+amin:Sent"
    gnus-parameters
-   '(("gnu.*"
-      (gcc-self . t)))
+   '(("gnu\\.deepspec"
+      (to-address . "deepspec@lists.cs.princeton.edu")
+      (to-list    . "deepspec@lists.cs.princeton.edu"))
+     ("gnu\\.emacs-devel"
+      (to-address . "emacs-devel@gnu.org")
+      (to-list    . "emacs-devel@gnu.org"))
+     ("gnu\\.emacs-orgmode"
+      (to-address . "emacs-orgmode@gnu.org")
+      (to-list    . "emacs-orgmode@gnu.org"))
+     ("gnu\\.emacsconf-discuss"
+      (to-address . "emacsconf-discuss@gnu.org")
+      (to-list    . "emacsconf-discuss@gnu.org"))
+     ("gnu\\.fencepost-users"
+      (to-address . "fencepost-users@gnu.org")
+      (to-list    . "fencepost-users@gnu.org"))
+     ("gnu\\.gnunet-developers"
+      (to-address . "gnunet-developers@gnu.org")
+      (to-list    . "gnunet-developers@gnu.org"))
+     ("gnu\\.guile-devel"
+      (to-address . "guile-devel@gnu.org")
+      (to-list    . "guile-devel@gnu.org"))
+     ("gnu\\.guix-devel"
+      (to-address . "guix-devel@gnu.org")
+      (to-list    . "guix-devel@gnu.org"))
+     ("gnu\\.haskell-art"
+      (to-address . "haskell-art@we.lurk.org")
+      (to-list    . "haskell-art@we.lurk.org"))
+     ("gnu\\.haskell-cafe"
+      (to-address . "haskell-cafe@haskell.org")
+      (to-list    . "haskell-cafe@haskell.org"))
+     ("gnu\\.help-gnu-emacs"
+      (to-address . "help-gnu-emacs@gnu.org")
+      (to-list    . "help-gnu-emacs@gnu.org"))
+     ("gnu\\.info-gnu-emacs"
+      (to-address . "info-gnu-emacs@gnu.org")
+      (to-list    . "info-gnu-emacs@gnu.org"))
+     ("gnu\\.info-guix"
+      (to-address . "info-guix@gnu.org")
+      (to-list    . "info-guix@gnu.org"))
+     ("gnu\\.notmuch"
+      (to-address . "notmuch@notmuchmail.org")
+      (to-list    . "notmuch@notmuchmail.org"))
+     ("gnu\\.parabola-dev"
+      (to-address . "dev@lists.parabola.nu")
+      (to-list    . "dev@lists.parabola.nu"))
+     ("gnu\\.webmasters"
+      (to-address . "webmasters@gnu.org")
+      (to-list    . "webmasters@gnu.org"))
+     ("gnu\\.www-commits"
+      (to-address . "www-commits@gnu.org")
+      (to-list    . "www-commits@gnu.org"))
+     ("gnu\\.www-discuss"
+      (to-address . "www-discuss@gnu.org")
+      (to-list    . "www-discuss@gnu.org"))
+     ("gnu\\.~bandali\\.public-inbox"
+      (to-address . "~bandali/public-inbox@lists.sr.ht")
+      (to-list    . "~bandali/public-inbox@lists.sr.ht"))
+     ("gnu\\.~sircmpwn\\.srht-admins"
+      (to-address . "~sircmpwn/sr.ht-admins@lists.sr.ht")
+      (to-list    . "~sircmpwn/sr.ht-admins@lists.sr.ht"))
+     ("gnu\\.~sircmpwn\\.srht-announce"
+      (to-address . "~sircmpwn/sr.ht-announce@lists.sr.ht")
+      (to-list    . "~sircmpwn/sr.ht-announce@lists.sr.ht"))
+     ("gnu\\.~sircmpwn\\.srht-dev"
+      (to-address . "~sircmpwn/sr.ht-dev@lists.sr.ht")
+      (to-list    . "~sircmpwn/sr.ht-dev@lists.sr.ht"))
+     ("gnu\\.~sircmpwn\\.srht-discuss"
+      (to-address . "~sircmpwn/sr.ht-discuss@lists.sr.ht")
+      (to-list    . "~sircmpwn/sr.ht-discuss@lists.sr.ht"))
+     ("gnu.*"
+      (gcc-self . t))
+     ("gnu\\."
+      (subscribed . t)))
    gnus-large-newsgroup  50
    gnus-home-directory   (no-littering-expand-var-file-name "gnus/")
    gnus-directory        (concat gnus-home-directory "news/")
@@ -2350,8 +2408,6 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
       (concat local lapsed))))
   (bind-keys
    :map gnus-article-mode-map
-   ("r"   . gnus-article-reply-with-original)
-   ("R"   . gnus-article-wide-reply-with-original)
    ("M-L" . org-store-link)))
 
 (use-feature gnus-sum
@@ -2364,8 +2420,6 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
   :config
   (bind-keys
    :map gnus-summary-mode-map
-   ("r"   . gnus-summary-reply-with-original)
-   ("R"   . gnus-summary-wide-reply-with-original)
    ("M-L" . org-store-link))
   :hook (gnus-summary-mode . a/no-mouse-autoselect-window))
 
@@ -2374,14 +2428,14 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
   (setq gnus-posting-styles
         '((".*"
            (address "amin@bndl.org")
-           (body "\nBest,\namin\n")
+           (body "\nBest,\n")
            (eval (setq a/message-cite-say-hi t)))
           ("gnu.*"
            (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")
+           (body "Added  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")
@@ -2424,6 +2478,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)
@@ -2441,6 +2505,8 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
         message-kill-buffer-on-exit t
         message-send-mail-function 'message-send-mail-with-sendmail
         message-sendmail-envelope-from 'header
+        message-subscribed-address-functions
+        '(gnus-find-subscribed-addresses)
         message-dont-reply-to-names
         "\\(\\(amin@bndl\\.org\\)\\|\\(.*@\\(aminb\\|amin\\.bndl\\)\\.org\\)\\|\\(\\(bandali\\|aminb?\\|mab\\)@gnu\\.org\\)\\|\\(a\\(min\\.\\)?bandali@uwaterloo\\.ca\\)\\|\\(abandali@csclub\\.uwaterloo\\.ca\\)\\)")
   (require 'company-ebdb)
@@ -2589,19 +2655,6 @@ Now with ERC!
              ((moznet "amin/moznet" ,pwd)))))))
 #+end_src
 
-* Blogging
-:PROPERTIES:
-:CUSTOM_ID: blogging
-:END:
-
-** [[https://ox-hugo.scripter.co][ox-hugo]]
-
-#+begin_src emacs-lisp
-(use-package ox-hugo
-  :after ox
-  :demand)
-#+end_src
-
 * Post initialization
 :PROPERTIES:
 :CUSTOM_ID: post-initialization