[emacs] say hi and greetings for me :)
[~bandali/configs] / init.org
index 5d5a624..480f73f 100644 (file)
--- a/init.org
+++ b/init.org
@@ -243,7 +243,9 @@ can then be managed with the help of Magit or other tools.
    ("C-c B A" . borg-activate)
    ("C-c B a" . borg-assimilate)
    ("C-c B b" . borg-build)
-   ("C-c B c" . borg-clone)))
+   ("C-c B c" . borg-clone)
+   ("C-c B m" . borg-insert-update-message)
+   ("C-c B r" . borg-remove)))
 #+end_src
 
 *** =use-package=
@@ -283,7 +285,6 @@ database, low-level functions for querying the database, and a
   :bind
   (("C-c B d" . epkg-describe-package)
    ("C-c B p" . epkg-list-packages)
-   ("C-c B r" . borg-remove)
    ("C-c B u" . epkg-update)))
 #+end_src
 
@@ -371,7 +372,7 @@ See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.htm
   :config (or (server-running-p) (server-mode)))
 #+end_src
 
-** Unicode support
+** COMMENT Unicode support
 
 Font stack with better unicode support, around =Ubuntu Mono= and
 =Hack=.
@@ -708,6 +709,7 @@ In short, my favourite way of life.
         org-edit-src-content-indentation 0
         org-email-link-description-format "Email %c: %s" ; %.30s
         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))
   :hook ((org-mode . org-indent-mode)
          (org-mode . auto-fill-mode)
@@ -1659,7 +1661,7 @@ Make =*scratch*= and =*Messages*= unkillable.
 
 Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
-** [[https://github.com/DarthFennec/highlight-indent-guides][highlight-indent-guides]]
+** COMMENT [[https://github.com/DarthFennec/highlight-indent-guides][highlight-indent-guides]]                                 :ARCHIVE:
 
 #+begin_src emacs-lisp
 (use-package highlight-indent-guides
@@ -1773,6 +1775,58 @@ Hopefully temporary.
   (setq alert-default-style 'notifier))
 #+end_src
 
+** hl-todo
+
+#+begin_src emacs-lisp
+(use-package hl-todo
+  :defer 4
+  :config
+  (global-hl-todo-mode))
+#+end_src
+
+** shrink-path
+
+#+begin_src emacs-lisp
+(use-package shrink-path
+  :after eshell
+  :config
+  (setq eshell-prompt-regexp "\\(.*\n\\)*λ "
+        eshell-prompt-function #'+eshell/prompt)
+
+  (defun +eshell/prompt ()
+    (let ((base/dir (shrink-path-prompt default-directory)))
+      (concat (propertize (car base/dir)
+                          'face 'font-lock-comment-face)
+              (propertize (cdr base/dir)
+                          'face 'font-lock-constant-face)
+              (propertize (+eshell--current-git-branch)
+                          'face 'font-lock-function-name-face)
+              "\n"
+              (propertize "λ" 'face 'eshell-prompt-face)
+              ;; needed for the input text to not have prompt face
+              (propertize " " 'face 'default))))
+
+  (defun +eshell--current-git-branch ()
+    (let ((branch (car (loop for match in (split-string (shell-command-to-string "git branch") "\n")
+                             when (string-match "^\*" match)
+                             collect match))))
+      (if (not (eq branch nil))
+          (concat " " (substring branch 2))
+        ""))))
+#+end_src
+
+** magithub
+
+For when I /have to/ use GH.
+
+#+begin_src emacs-lisp
+(use-package magithub
+  :after magit
+  :config
+  (magithub-feature-autoinject t)
+  (setq magithub-clone-default-directory "~/src/git"))
+#+end_src
+
 * Email
 
 #+begin_src emacs-lisp
@@ -1869,7 +1923,8 @@ Hopefully temporary.
   :config
   (setq gnus-posting-styles
         '((".*"
-           (address "amin@aminb.org"))
+           (address "amin@aminb.org")
+           (body "\nBest,\namin\n"))
           ("gnu.*"
            (address "bandali@gnu.org"))
           ("nnimap\\+uwaterloo:.*"
@@ -1955,53 +2010,105 @@ Convenient footnotes in =message-mode=.
 
 ** supercite
 
-#+begin_src emacs-lisp :tangle no
+#+begin_src emacs-lisp
 (use-package supercite
-  :commands sc-cite-original
+  :after message
   :init
-  (add-hook 'mail-citation-hook 'sc-cite-original)
+  (setq sc-nested-citation-p t
+        ;; sc-cite-blank-lines-p t
+        sc-citation-leader ""
+        sc-reference-tag-string ""
+        sc-auto-fill-region-p nil
+        sc-confirm-always-p nil)
+  :config
+  (defun amin--sc-header ()
+    "Hi <firstname>,\n\n <from> writes:"
+    (let ((sc-mumble "")
+             (whofrom (sc-whofrom)))
+      (if whofrom
+             (insert (sc-hdr "Hi " (sc-mail-field "sc-firstname") ",\n\n")
+                  sc-reference-tag-string
+                         whofrom
+                         " writes:\n"))))
+  (add-to-list 'sc-rewrite-header-list '(amin--sc-header) t)
+  (setq sc-preferred-header-style (1- (length sc-rewrite-header-list)))
+  (add-hook 'mail-citation-hook 'sc-cite-original))
+#+end_src
+
+** ebdb
+
+#+begin_src emacs-lisp
+(use-package ebdb
+  :defer 1
+  :bind (:map gnus-group-mode-map ("e" . ebdb))
+  :config
+  (setq ebdb-sources (no-littering-expand-var-file-name "ebdb")))
+
+(use-package ebdb-com
+  :after ebdb)
+
+(use-package ebdb-complete
+  :after ebdb
+  :config
+  (ebdb-complete-enable))
+
+(use-package ebdb-gnus
+  :after ebdb)
+
+(use-package ebdb-message
+  :after ebdb)
+
+;; (use-package ebdb-vcard
+;;   :after ebdb)
+#+end_src
+
+** COMMENT bbdb
+
+#+begin_comment
+[submodule "bbdb"]
+       path = lib/bbdb
+       url = https://git.savannah.nongnu.org/git/bbdb.git
+       load-path = lisp/elisp
+       info-path = doc
+       build-step = ./autogen.sh
+       build-step = ./configure --with-lispdir=elisp
+       build-step = make
+       build-step = make install
+#+end_comment
 
-  (defun sc-remove-existing-signature ()
-    (save-excursion
-      (goto-char (region-beginning))
-      (when (re-search-forward message-signature-separator (region-end) t)
-        (delete-region (match-beginning 0) (region-end)))))
+#+begin_src emacs-lisp
+(use-package bbdb
+  :init
+  (bbdb-mua-auto-update-init 'message)
+  (setq bbdb-mua-auto-update-p 'query)
+  (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus))
+#+end_src
 
-  (add-hook 'mail-citation-hook 'sc-remove-existing-signature)
+** COMMENT message-x
 
-  (defun sc-remove-if-not-mailing-list ()
-    (unless (assoc "list-id" sc-mail-info)
-      (setq attribution sc-default-attribution
-            citation (concat sc-citation-delimiter
-                             sc-citation-separator))))
+#+begin_src emacs-lisp
+(use-package message-x
+  :custom
+  (message-x-completion-alist
+   (quote
+    (("\\([rR]esent-\\|[rR]eply-\\)?[tT]o:\\|[bB]?[cC][cC]:" . gnus-harvest-find-address)
+     ((if
+          (boundp
+           (quote message-newgroups-header-regexp))
+          message-newgroups-header-regexp message-newsgroups-header-regexp)
+      . message-expand-group)))))
+#+end_src
 
-  (add-hook 'sc-attribs-postselect-hook 'sc-remove-if-not-mailing-list)
+** COMMENT gnus-harvest
 
+#+begin_src emacs-lisp
+(use-package gnus-harvest
+  :commands gnus-harvest-install
+  :demand t
   :config
-  (defun sc-fill-if-different (&optional prefix)
-    "Fill the region bounded by `sc-fill-begin' and point.
-Only fill if optional PREFIX is different than
-`sc-fill-line-prefix'.  If `sc-auto-fill-region-p' is nil, do not
-fill region.  If PREFIX is not supplied, initialize fill
-variables.  This is useful for a regi `begin' frame-entry."
-    (if (not prefix)
-        (setq sc-fill-line-prefix ""
-              sc-fill-begin (line-beginning-position))
-      (if (and sc-auto-fill-region-p
-               (not (string= prefix sc-fill-line-prefix)))
-          (let ((fill-prefix sc-fill-line-prefix))
-            (unless (or (string= fill-prefix "")
-                        (save-excursion
-                          (goto-char sc-fill-begin)
-                          (or (looking-at ">+  +")
-                              (< (length
-                                  (buffer-substring (point)
-                                                    (line-end-position)))
-                                 65))))
-              (fill-region sc-fill-begin (line-beginning-position)))
-            (setq sc-fill-line-prefix prefix
-                  sc-fill-begin (line-beginning-position)))))
-nil))
+  (if (featurep 'message-x)
+      (gnus-harvest-install 'message-x)
+    (gnus-harvest-install)))
 #+end_src
 
 ** COMMENT gnus-alias                                              :ARCHIVE: