summary refs log tree commit diff
path: root/emacs/custom/my-notmuch.el
blob: b150619187e3acfe1a54c074c5697be77d4bd7f2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
;;; my-notmuch.el --- Configures notmuch -*- lexical-binding: t -*-

;;; Commentary:

;;; Code:

(require 'notmuch)

(setq mail-envelope-from 'header)
(setq mail-specify-envelope-from t)
(setq message-sendmail-envelope-from 'header)

(setq mail-host-address (system-name))

(setq notmuch-mua-user-agent-function
      (lambda () (format "Emacs %s; notmuch.el %s" emacs-version notmuch-emacs-version)))
(setq notmuch-mua-cite-function #'message-cite-original-without-signature)

(defvar my/notmuch-cache-dir (format "%s/.cache/notmuch" (getenv "HOME")))
(make-directory my/notmuch-cache-dir t)

;; Cache addresses for completion:
(setq notmuch-address-save-filename (concat my/notmuch-cache-dir "/addresses"))

;; kill the buffer after sending the message
(setq message-kill-buffer-on-exit t)

(setq message-send-mail-function 'message-send-mail-with-sendmail)
(setq send-mail-function 'sendmail-send-it)

(setq notmuch-show-logo nil)
(setq notmuch-always-prompt-for-sender t)
(setq notmuch-show-relative-dates t)
(setq notmuch-archive-tags '("-inbox" "-unread" "-new" "+archive"))
(setq notmuch-fcc-dirs '(("franck@fcuny.net" . "\"FastMail/Sent\" +sent +fastmail -inbox")))

;; configurations related to search
;; (TODO: this is not working !?)
(setq notmuch-search-oldest-first nil)

;; a few saved search - I can jump to them by hitting 'j'
(setq notmuch-saved-searches '(;; all unread messages in my inbox
                               (:name "inbox unread" :query "tag:inbox AND tag:unread" :key "U" :sort-order "newest-first")
                               ;; all messages in my inbox
                               (:name "inbox" :query "tag:inbox" :key "i")
                               ;; all messages for the current day
                               (:name "today" :query "date:today" :key "t" :sort-order "newest-first")
                               ;; all messages for the current week
                               (:name "this week" :query "date:this_week.." :key "w")
                               ;; all messages in the inbox that are
                               ;; unread and less than a week old
                               (:name "focused inbox" :query "tag:inbox AND tag:unread AND date:this_week.." :key "f")
                               ;; all messages that are flagged
                               (:name "flagged" :query "tag:flagged" :key "F")
                               ;; all messages that have a calendar
                               ;; invitation, that are unread and in
                               ;; my inbox
                               (:name "pending calendar invites" :query "tag:unread AND tag:inbox AND attachment:ics" :key "c")
                               ;; all unread messages for a year
                               (:name "unread":query "tag:unread AND date:this_year.." :key "u")
                               ;; all messages I've sent
                               (:name "sent" :query "tag:sent" :key "s")
                               ;; all my emails, no filter
                               (:name "all emails" :query "*" :key "a")))
(setq notmuch-show-empty-saved-searches t)

;; make it short and sweet
(setq notmuch-search-result-format
      '(("date" . "%12s ")
        ("count" . "%-7s ")
        ("authors" . "%-30s ")
        ("subject" . "%-72s ")
        ("tags" . "(%s)")))

(add-hook 'notmuch-message-mode-hook 'flyspell-mode)

(provide 'my-notmuch)

;;; my-notmuch.el ends here