Commit | Line | Data |
---|---|---|
4c05c418 AB |
1 | ;;; bandali-message.el --- bandali's message.el setup -*- lexical-binding: t; -*- |
2 | ||
78d731e1 | 3 | ;; Copyright (C) 2018-2022 Amin Bandali |
4c05c418 AB |
4 | |
5 | ;; Author: Amin Bandali <bandali@gnu.org> | |
6 | ;; Keywords: mail, news | |
7 | ||
8 | ;; This program is free software; you can redistribute it and/or modify | |
9 | ;; it under the terms of the GNU General Public License as published by | |
10 | ;; the Free Software Foundation, either version 3 of the License, or | |
11 | ;; (at your option) any later version. | |
12 | ||
13 | ;; This program is distributed in the hope that it will be useful, | |
14 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | ;; GNU General Public License for more details. | |
17 | ||
18 | ;; You should have received a copy of the GNU General Public License | |
19 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | |
20 | ||
21 | ;;; Commentary: | |
22 | ||
23 | ;; My setup for message.el. | |
24 | ||
25 | ;;; Code: | |
26 | ||
c84be134 AB |
27 | (with-eval-after-load 'message |
28 | ;; :bind (:map message-mode-map ("<C-return>" . b/insert-asterism)) | |
2087ae39 AB |
29 | ;; redefine for a simplified In-Reply-To header |
30 | ;; (see https://todo.sr.ht/~sircmpwn/lists.sr.ht/67) | |
31 | (defun message-make-in-reply-to () | |
32 | "Return the In-Reply-To header for this message." | |
33 | (when message-reply-headers | |
34 | (let ((from (mail-header-from message-reply-headers)) | |
35 | (msg-id (mail-header-id message-reply-headers))) | |
36 | (when from | |
37 | msg-id)))) | |
38 | ||
39 | (defconst b/message-cite-style-format "On %Y-%m-%d %l:%M %p, %N wrote:") | |
40 | (defconst message-cite-style-bandali | |
41 | '((message-cite-function 'message-cite-original) | |
42 | (message-citation-line-function 'message-insert-formatted-citation-line) | |
43 | (message-cite-reply-position 'traditional) | |
44 | (message-yank-prefix "> ") | |
45 | (message-yank-cited-prefix ">") | |
46 | (message-yank-empty-prefix ">") | |
47 | (message-citation-line-format | |
48 | (if b/message-cite-say-hi | |
49 | (concat "Hi %F,\n\n" b/message-cite-style-format) | |
50 | b/message-cite-style-format))) | |
51 | "Citation style based on Mozilla Thunderbird's. Use with message-cite-style.") | |
78d731e1 | 52 | (setq |
c84be134 AB |
53 | message-elide-ellipsis "[...]\n" |
54 | ;; message-cite-style 'message-cite-style-bandali | |
8486a0d6 AB |
55 | message-citation-line-format "%N writes:\n" |
56 | message-citation-line-function 'message-insert-formatted-citation-line | |
5efecfcd | 57 | message-confirm-send t |
8486a0d6 | 58 | message-kill-buffer-on-exit t |
a220fb5b | 59 | message-send-mail-function #'smtpmail-send-it |
8486a0d6 AB |
60 | message-subscribed-address-functions |
61 | '(gnus-find-subscribed-addresses) | |
62 | message-dont-reply-to-names | |
18fed9bb | 63 | "\\(\\(bandali@kelar\\.org\\)\\|\\(amin@shemshak\\.org\\)\\|\\(\\(bandali\\|mab\\|aminb?\\)@gnu\\.org\\)\\|\\(a?bandali@\\(csclub\\.\\)?uwaterloo\\.ca\\)\\|amin\\.bandali@savoirfairelinux\\.com\\)") |
c84be134 AB |
64 | ;; (custom-set-faces |
65 | ;; '(message-header-subject | |
66 | ;; ((t (:foreground "#111" :weight semi-bold)))) | |
67 | ;; '(message-header-to | |
68 | ;; ((t (:foreground "#111" :weight normal)))) | |
69 | ;; '(message-header-cc | |
70 | ;; ((t (:foreground "#333" :weight normal)))) | |
71 | ||
72 | ;; footnote | |
a0e241c4 | 73 | ;; (with-eval-after-load 'footnote |
78d731e1 AB |
74 | ;; (setq footnote-start-tag "" |
75 | ;; footnote-end-tag "" | |
76 | ;; footnote-style 'unicode)) | |
c84be134 | 77 | |
23eb0d7a AB |
78 | ;; custom newline & reformat function |
79 | (defun b/message-newline-or-asterism (arg) | |
80 | "Create newlines per my liking or insert asterism if ARG is | |
81 | non-nil." | |
82 | (interactive "P") | |
83 | (if arg | |
84 | (b/insert-asterism) | |
85 | (progn | |
86 | (beginning-of-line) | |
87 | (delete-region (point) (line-end-position)) | |
88 | (newline) | |
89 | (open-line 1)))) | |
90 | (define-key message-mode-map | |
91 | (kbd "M-RET") #'b/message-newline-or-asterism) | |
92 | ||
c84be134 | 93 | ;; local key bindings |
bc04a4d4 AB |
94 | (define-key message-mode-map |
95 | [remap next-line] #'mail-abbrev-next-line) | |
96 | (define-key message-mode-map | |
97 | [remap end-of-buffer] #'mail-abbrev-end-of-buffer) | |
c84be134 AB |
98 | (defvar b/footnote-prefix-map) |
99 | (define-prefix-command 'b/footnote-prefix-map) | |
100 | (define-key message-mode-map (kbd "C-c f n") | |
101 | 'b/footnote-prefix-map) | |
102 | (define-key b/footnote-prefix-map (kbd "a") | |
103 | #'footnote-add-footnote) | |
104 | (define-key b/footnote-prefix-map (kbd "b") | |
105 | #'footnote-back-to-message) | |
106 | (define-key b/footnote-prefix-map (kbd "c") | |
107 | #'footnote-cycle-style) | |
108 | (define-key b/footnote-prefix-map (kbd "d") | |
109 | #'footnote-delete-footnote) | |
110 | (define-key b/footnote-prefix-map (kbd "g") | |
111 | #'footnote-goto-footnote) | |
112 | (define-key b/footnote-prefix-map (kbd "r") | |
113 | #'footnote-renumber-footnotes) | |
114 | (define-key b/footnote-prefix-map (kbd "s") | |
115 | #'footnote-set-style)) | |
116 | ;; hooks | |
117 | ;; (add-hook 'message-setup-hook #'mml-secure-message-sign-pgpmime) | |
118 | (add-hook 'message-mode-hook #'flyspell-mode) | |
5df34463 AB |
119 | (add-hook 'message-mode-hook |
120 | (lambda () | |
121 | (local-unset-key (kbd "C-c C-s")))) | |
2087ae39 AB |
122 | |
123 | (provide 'bandali-message) | |
4c05c418 | 124 | ;;; bandali-message.el ends here |