emacs: update packages and add back typo.el
[~bandali/configs] / .emacs.d / init.el
index c423411..0c129d1 100644 (file)
@@ -17,9 +17,9 @@
 
 ;;; Commentary:
 
 
 ;;; Commentary:
 
-;; Emacs configuration of Amin Bandali, computer scientist, functional
-;; programmer, and free software activist.  Uses straight.el for
-;; purely functional and fully reproducible package management.
+;; Emacs configuration of Amin Bandali, computer scientist, free
+;; software activist, GNU maintainer & webmaster.  Uses straight.el
+;; for purely functional and fully reproducible package management.
 
 ;; Over the years, I've taken inspiration from configurations of many
 ;; great people.  Some that I can remember off the top of my head are:
 
 ;; Over the years, I've taken inspiration from configurations of many
 ;; great people.  Some that I can remember off the top of my head are:
   (previous-line)
   (insert "\n\f\n;;; "))
 
   (previous-line)
   (insert "\n\f\n;;; "))
 
-(defvar b/fill-column 47
-  "My custom `fill-column'.")
+;; (defvar b/fill-column 47
+;;   "My custom `fill-column'.")
 
 (defconst b/asterism "* * *")
 
 
 (defconst b/asterism "* * *")
 
   (insert
    (concat
     "\n\n"
   (insert
    (concat
     "\n\n"
-    (make-string (floor (/ (- b/fill-column (length b/asterism)) 2))
+    (make-string (floor (/ (- fill-column (length b/asterism)) 2))
                  ?\s)
     b/asterism
     "\n\n")))
                  ?\s)
     b/asterism
     "\n\n")))
@@ -313,9 +313,7 @@ For disabling the behaviour for certain buffers and/or modes."
  scroll-conservatively 10
  scroll-preserve-screen-position 1
  ;; focus follows mouse
  scroll-conservatively 10
  scroll-preserve-screen-position 1
  ;; focus follows mouse
- mouse-autoselect-window t
- ;; custom fill-column
- fill-column b/fill-column)
+ mouse-autoselect-window t)
 
 (setq-default
  ;; always use space for indentation
 
 (setq-default
  ;; always use space for indentation
@@ -1417,8 +1415,22 @@ This function is intended for use with `ivy-ignore-buffers'."
 
 (use-package alloy-mode
   :straight (:host github :repo "dwwmmn/alloy-mode")
 
 (use-package alloy-mode
   :straight (:host github :repo "dwwmmn/alloy-mode")
-  :mode "\\.als\\'"
-  :config (setq alloy-basic-offset 2)
+  :mode "\\.\\(als\\|dsh\\)\\'"
+  :config
+  (setq alloy-basic-offset 2)
+  ;; (defun b/alloy-simple-indent (start end)
+  ;;   (interactive "r")
+  ;;   ;; (if (region-active-p)
+  ;;   ;;     (indent-rigidly start end alloy-basic-offset)
+  ;;   ;;   (if (bolp)
+  ;;   ;;       (indent-rigidly (line-beginning-position)
+  ;;   ;;                       (line-end-position)
+  ;;   ;;                       alloy-basic-offset)))
+  ;;   (indent-to (+ (current-column) alloy-basic-offset)))
+  :bind (:map alloy-mode-map
+              ("RET" . electric-newline-and-maybe-indent)
+              ;; ("TAB" . b/alloy-simple-indent)
+              ("TAB" . indent-for-tab-command))
   :hook (alloy-mode . (lambda () (setq-local indent-tabs-mode nil))))
 
 (eval-when-compile (defvar lean-mode-map))
   :hook (alloy-mode . (lambda () (setq-local indent-tabs-mode nil))))
 
 (eval-when-compile (defvar lean-mode-map))
@@ -1477,7 +1489,9 @@ This function is intended for use with `ivy-ignore-buffers'."
   (b/setq-every 2
     web-mode-code-indent-offset
     web-mode-css-indent-offset
   (b/setq-every 2
     web-mode-code-indent-offset
     web-mode-css-indent-offset
-    web-mode-markup-indent-offset))
+    web-mode-markup-indent-offset)
+  :custom
+  (web-mode-enable-auto-indentation nil))
 
 (use-package emmet-mode
   :after (:any web-mode css-mode sgml-mode)
 
 (use-package emmet-mode
   :after (:any web-mode css-mode sgml-mode)
@@ -1849,10 +1863,8 @@ This function is intended for use with `ivy-ignore-buffers'."
 
 ;; easily type pretty quotes & other typography, like ‘’“”-–—«»‹›
 (use-package typo
 
 ;; easily type pretty quotes & other typography, like ‘’“”-–—«»‹›
 (use-package typo
-  :disabled
   :defer 0.5
   :config
   :defer 0.5
   :config
-  (typo-global-mode 1)
   :hook (((text-mode erc-mode web-mode) . typo-mode)
          (tex-mode                      . (lambda ()(typo-mode -1)))))
 
   :hook (((text-mode erc-mode web-mode) . typo-mode)
          (tex-mode                      . (lambda ()(typo-mode -1)))))
 
@@ -2002,7 +2014,12 @@ This function is intended for use with `ivy-ignore-buffers'."
     (lambda ()
       (interactive)
       (setq debbugs-gnu-current-suppress t)
     (lambda ()
       (interactive)
       (setq debbugs-gnu-current-suppress t)
-      (debbugs-gnu debbugs-gnu-default-severities '("gnuzilla"))))))
+      (debbugs-gnu debbugs-gnu-default-severities '("gnuzilla"))))
+   ("C-c D G" .
+    (lambda ()
+      (interactive)
+      (setq debbugs-gnu-current-suppress t)
+      (debbugs-gnu debbugs-gnu-default-severities '("guix"))))))
 
 (use-package org-ref
   :init
 
 (use-package org-ref
   :init
@@ -2198,6 +2215,8 @@ This function is intended for use with `ivy-ignore-buffers'."
                                   (list ".*<\\(.*\\)\\.\\(non\\)?gnu\\.org>.*" "l.\\1")
                                   ;; gnus
                                   (list ".*<\\(.*\\)\\.gnus\\.org>.*" "l.\\1")
                                   (list ".*<\\(.*\\)\\.\\(non\\)?gnu\\.org>.*" "l.\\1")
                                   ;; gnus
                                   (list ".*<\\(.*\\)\\.gnus\\.org>.*" "l.\\1")
+                                  ;; libreplanet
+                                  (list ".*<\\(.*\\)\\.libreplanet\\.org>.*" "l.\\1")
                                   ;; *.lists.sr.ht, omitting one dot if present
                                   ;;    add more \\.?\\([^.]*\\) if needed
                                   (list ".*<~\\(.*\\)/\\([^.]*\\)\\.?\\([^.]*\\)\\.lists.sr.ht>.*" "l.~\\1.\\2\\3")
                                   ;; *.lists.sr.ht, omitting one dot if present
                                   ;;    add more \\.?\\([^.]*\\) if needed
                                   (list ".*<~\\(.*\\)/\\([^.]*\\)\\.?\\([^.]*\\)\\.lists.sr.ht>.*" "l.~\\1.\\2\\3")
@@ -2463,10 +2482,6 @@ This function is intended for use with `ivy-ignore-buffers'."
 
 (use-feature gnus-msg
   :config
 
 (use-feature gnus-msg
   :config
-  (defvar b/gnu-signature "Amin Bandali
-Free Software Activist | GNU Maintainer & Webmaster
-GPG: BE62 7373 8E61 6D6D 1B3A  08E8 A21A 0202 4881 6103
-https://bandali.eu.org")
   (defvar b/shemshak-signature "Amin Bandali
 https://shemshak.org/~amin")
   (defvar b/uw-signature "Amin Bandali, MMath Student
   (defvar b/shemshak-signature "Amin Bandali
 https://shemshak.org/~amin")
   (defvar b/uw-signature "Amin Bandali, MMath Student
@@ -2480,8 +2495,7 @@ https://csclub.uwaterloo.ca/~abandali")
   (setq gnus-message-replysign t
         gnus-posting-styles
         '((".*"
   (setq gnus-message-replysign t
         gnus-posting-styles
         '((".*"
-           (address "bandali@gnu.org")
-           (signature b/gnu-signature))
+           (address "bandali@gnu.org"))
           ("nnimap\\+gnu:l\\..*"
            (signature nil))
           ((header "subject" "ThankCRM")
           ("nnimap\\+gnu:l\\..*"
            (signature nil))
           ((header "subject" "ThankCRM")
@@ -2504,8 +2518,9 @@ https://csclub.uwaterloo.ca/~abandali")
            (address "bandali@csclub.uwaterloo.ca")
            (signature b/csc-signature)
            (gcc "nnimap+csc:Sent"))))
            (address "bandali@csclub.uwaterloo.ca")
            (signature b/csc-signature)
            (gcc "nnimap+csc:Sent"))))
-  ;; :hook (gnus-message-setup . mml-secure-message-sign)
-  )
+  :hook (gnus-message-setup . (lambda ()
+                                (unless (mml-secure-is-encrypted-p)
+                                  (mml-secure-message-sign)))))
 
 (use-feature gnus-topic
   :hook (gnus-group-mode . gnus-topic-mode)
 
 (use-feature gnus-topic
   :hook (gnus-group-mode . gnus-topic-mode)
@@ -2543,6 +2558,8 @@ https://csclub.uwaterloo.ca/~abandali")
         mm-verify-option 'known))
 
 (use-feature mm-uu
         mm-verify-option 'known))
 
 (use-feature mm-uu
+  :config
+  (set-face-attribute 'mm-uu-extract nil :extend t)
   :custom
   (mm-uu-diff-groups-regexp
    "\\(gmane\\|gnu\\|l\\)\\..*\\(diff\\|commit\\|cvs\\|bug\\|dev\\)"))
   :custom
   (mm-uu-diff-groups-regexp
    "\\(gmane\\|gnu\\|l\\)\\..*\\(diff\\|commit\\|cvs\\|bug\\|dev\\)"))
@@ -2592,8 +2609,8 @@ https://csclub.uwaterloo.ca/~abandali")
   :hook (;; (message-setup . mml-secure-message-sign-pgpmime)
          (message-mode . flyspell-mode)
          (message-mode . (lambda ()
   :hook (;; (message-setup . mml-secure-message-sign-pgpmime)
          (message-mode . flyspell-mode)
          (message-mode . (lambda ()
-                           (setq-local fill-column b/fill-column
-                                       message-fill-column b/fill-column)
+                           ;; (setq-local fill-column b/fill-column
+                           ;;             message-fill-column b/fill-column)
                            (make-local-variable 'company-idle-delay)
                            (setq company-idle-delay 0.2))))
   ;; :custom-face
                            (make-local-variable 'company-idle-delay)
                            (setq company-idle-delay 0.2))))
   ;; :custom-face