* lisp/bandali-erc.el: Small tweaks to the nick and pal faces
[~bandali/configs] / lisp / bandali-message.el
index 491b6e2..e7e43f8 100644 (file)
@@ -1,6 +1,31 @@
-(use-package message
-  :bind (:map message-mode-map ("<C-return>" . b/insert-asterism))
-  :config
+;;; bandali-message.el --- bandali's message.el setup  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018-2020  Amin Bandali
+
+;; Author: Amin Bandali <bandali@gnu.org>
+;; Keywords: mail, news
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; My setup for message.el.
+
+;;; Code:
+
+(with-eval-after-load 'message
+  ;; :bind (:map message-mode-map ("<C-return>" . b/insert-asterism))
   ;; redefine for a simplified In-Reply-To header
   ;; (see https://todo.sr.ht/~sircmpwn/lists.sr.ht/67)
   (defun message-make-in-reply-to ()
            (concat "Hi %F,\n\n" b/message-cite-style-format)
          b/message-cite-style-format)))
     "Citation style based on Mozilla Thunderbird's. Use with message-cite-style.")
-  (setq ;; message-cite-style 'message-cite-style-bandali
-        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@shemshak\\.org\\)\\|\\(.*@aminb\\.org\\)\\|\\(\\(bandali\\|mab\\|aminb?\\)@gnu\\.org\\)\\|\\(a?bandali@\\(csclub\\.\\)?uwaterloo\\.ca\\)\\)")
+  (csetq
+   message-elide-ellipsis "[...]\n"
+   ;; message-cite-style 'message-cite-style-bandali
+   message-citation-line-format "%N writes:\n"
+   message-citation-line-function 'message-insert-formatted-citation-line
+   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@shemshak\\.org\\)\\|\\(.*@aminb\\.org\\)\\|\\(\\(bandali\\|mab\\|aminb?\\)@gnu\\.org\\)\\|bandali@fsf\\.org\\|\\(a?bandali@\\(csclub\\.\\)?uwaterloo\\.ca\\)\\|amin\\.bandali@savoirfairelinux\\.com\\)")
   ;; (require 'company-ebdb)
-  :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)
-                           (eval-when-compile (defvar company-idle-delay))
-                           (make-local-variable 'company-idle-delay)
-                           (setq company-idle-delay 0.2))))
-  ;; :custom-face
-  ;; (message-header-subject ((t (:foreground "#111" :weight semi-bold))))
-  ;; (message-header-to      ((t (:foreground "#111" :weight normal))))
-  ;; (message-header-cc      ((t (:foreground "#333" :weight normal))))
-  :custom
-  (message-elide-ellipsis "[...]\n"))
-
-(use-package footnote
-  :after message
-  ;; :config
-  ;; (setq footnote-start-tag ""
-  ;;       footnote-end-tag   ""
-  ;;       footnote-style     'unicode)
-  :bind
-  (:map message-mode-map
-        :prefix-map b/footnote-prefix-map
-        :prefix "C-c f n"
-        ("a" . footnote-add-footnote)
-        ("b" . footnote-back-to-message)
-        ("c" . footnote-cycle-style)
-        ("d" . footnote-delete-footnote)
-        ("g" . footnote-goto-footnote)
-        ("r" . footnote-renumber-footnotes)
-        ("s" . footnote-set-style)))
+  ;; (custom-set-faces
+  ;;  '(message-header-subject
+  ;;    ((t (:foreground "#111" :weight semi-bold))))
+  ;;  '(message-header-to
+  ;;    ((t (:foreground "#111" :weight normal))))
+  ;;  '(message-header-cc
+  ;;    ((t (:foreground "#333" :weight normal))))
+
+  ;; footnote
+  (with-eval-after-load 'footnote
+    ;; (csetq footnote-start-tag ""
+    ;;        footnote-end-tag   ""
+    ;;        footnote-style     'unicode)
+    (when (featurep 'which-key)
+      (which-key-add-major-mode-key-based-replacements 'message-mode
+        "C-c f n" "footnote")))
+
+  ;; orgalist
+  (add-hook 'message-mode-hook
+            (lambda ()
+              ;; work around incompatibility between
+              ;; orgalist and yasnippet
+              (yas-minor-mode -1)
+              (orgalist-mode 1)
+              (yas-minor-mode 1)))
+
+  ;; local key bindings
+  (defvar b/footnote-prefix-map)
+  (define-prefix-command 'b/footnote-prefix-map)
+  (define-key message-mode-map (kbd "C-c f n")
+    'b/footnote-prefix-map)
+  (define-key b/footnote-prefix-map (kbd "a")
+    #'footnote-add-footnote)
+  (define-key b/footnote-prefix-map (kbd "b")
+    #'footnote-back-to-message)
+  (define-key b/footnote-prefix-map (kbd "c")
+    #'footnote-cycle-style)
+  (define-key b/footnote-prefix-map (kbd "d")
+    #'footnote-delete-footnote)
+  (define-key b/footnote-prefix-map (kbd "g")
+    #'footnote-goto-footnote)
+  (define-key b/footnote-prefix-map (kbd "r")
+    #'footnote-renumber-footnotes)
+  (define-key b/footnote-prefix-map (kbd "s")
+    #'footnote-set-style))
+;; hooks
+;; (add-hook 'message-setup-hook #'mml-secure-message-sign-pgpmime)
+(add-hook 'message-mode-hook #'flyspell-mode)
+(add-hook 'message-mode-hook
+          (lambda ()
+            ;; (setq-local fill-column b/fill-column
+            ;;             message-fill-column b/fill-column)
+            (eval-when-compile (defvar company-idle-delay))
+            (make-local-variable 'company-idle-delay)
+            (setq company-idle-delay 0.2)))
+
+(comment
+  (with-eval-after-load 'message-x
+    (csetq
+     message-x-completion-alist
+     '(("\\([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)))))
+
+(comment
+  (require 'gnus-harvest)
+  (if (featurep 'message-x)
+      (gnus-harvest-install 'message-x)
+    (gnus-harvest-install)))
 
 (provide 'bandali-message)
+;;; bandali-message.el ends here