emacs: update packages, add convenience bindings for debbugs
[~bandali/configs] / .emacs.d / init.el
index e8e4870..fa18238 100644 (file)
   (previous-line)
   (insert "\n\f\n;;; "))
 
+(defvar b/fill-column 47
+  "My custom `fill-column'.")
+
+(defconst b/asterism "* * *")
+
 (defun b/insert-asterism ()
+  "Insert a centred asterism."
   (interactive)
-  (insert "\n\n                                 * * *\n\n"))
+  (insert
+   (concat
+    "\n\n"
+    (make-string (floor (/ (- b/fill-column (length b/asterism)) 2))
+                 ?\s)
+    b/asterism
+    "\n\n")))
 
 (defun b/no-mouse-autoselect-window ()
   "Conveniently disable `focus-follows-mouse'.
@@ -301,7 +313,9 @@ For disabling the behaviour for certain buffers and/or modes."
  scroll-conservatively 10
  scroll-preserve-screen-position 1
  ;; focus follows mouse
- mouse-autoselect-window t)
+ mouse-autoselect-window t
+ ;; custom fill-column
+ fill-column b/fill-column)
 
 (setq-default
  ;; always use space for indentation
@@ -1087,7 +1101,8 @@ This function is intended for use with `ivy-ignore-buffers'."
                ("C-S-l" . b/eshell-clear)
                ("M-r"   . counsel-esh-history)
                ;; ([tab]   . company-complete)
-               ))
+               :map eshell-hist-mode-map
+               ("M-r" . counsel-esh-history)))
 
   :hook (eshell-mode . b/eshell-setup)
   :custom
@@ -1675,10 +1690,10 @@ This function is intended for use with `ivy-ignore-buffers'."
     ;; prefixes for global prefixes and minor modes
     "C-c @"   "outline"
     "C-c !"   "flycheck"
-    "C-c 8"   "typo"
-    "C-c 8 -" "typo/dashes"
-    "C-c 8 <" "typo/left-brackets"
-    "C-c 8 >" "typo/right-brackets"
+    ;; "C-c 8"   "typo"
+    ;; "C-c 8 -" "typo/dashes"
+    ;; "C-c 8 <" "typo/left-brackets"
+    ;; "C-c 8 >" "typo/right-brackets"
     "C-x RET" "coding system"
     "C-x 8"   "unicode"
     "C-x @"   "event modifiers"
@@ -1736,7 +1751,7 @@ This function is intended for use with `ivy-ignore-buffers'."
 (use-package crux            ; results in Waiting for git... [2 times]
   :defer 0.4
   :bind (("C-c d"   . crux-duplicate-current-line-or-region)
-         ("C-c D"   . crux-duplicate-and-comment-current-line-or-region)
+         ("C-c M-d" . crux-duplicate-and-comment-current-line-or-region)
          ("C-c f C" . crux-copy-file-preserve-attributes)
          ("C-c f D" . crux-delete-file-and-buffer)
          ("C-c f R" . crux-rename-file-and-buffer)
@@ -1833,12 +1848,19 @@ This function is intended for use with `ivy-ignore-buffers'."
 
 ;; easily type pretty quotes & other typography, like ‘’“”-–—«»‹›
 (use-package typo
+  :disabled
   :defer 0.5
   :config
   (typo-global-mode 1)
   :hook (((text-mode erc-mode web-mode) . typo-mode)
          (tex-mode                      . (lambda ()(typo-mode -1)))))
 
+(use-feature electric
+  :disabled
+  :demand
+  :config
+  (electric-quote-mode))
+
 ;; highlight TODOs in buffers
 (use-package hl-todo
   :defer 0.5
@@ -1967,7 +1989,19 @@ This function is intended for use with `ivy-ignore-buffers'."
   :straight (debbugs
              :host github
              :repo "emacs-straight/debbugs"
-             :files (:defaults "Debbugs.wsdl")))
+             :files (:defaults "Debbugs.wsdl"))
+  :bind
+  (("C-c D d" . debbugs-gnu)
+   ("C-c D e" .
+    (lambda ()
+      (interactive)
+      (setq debbugs-gnu-current-suppress t)
+      (debbugs-gnu debbugs-gnu-default-severities '("emacs"))))
+   ("C-c D g" .
+    (lambda ()
+      (interactive)
+      (setq debbugs-gnu-current-suppress t)
+      (debbugs-gnu debbugs-gnu-default-severities '("gnuzilla"))))))
 
 (use-package org-ref
   :init
@@ -2551,8 +2585,8 @@ https://csclub.uwaterloo.ca/~abandali")
   :hook (;; (message-setup . mml-secure-message-sign-pgpmime)
          (message-mode . flyspell-mode)
          (message-mode . (lambda ()
-                           ;; (setq fill-column 65
-                           ;;       message-fill-column 65)
+                           (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