summaryrefslogtreecommitdiff
path: root/emacs/.config/emacs-kj/lisp/kj-email.el
blob: 2d741641d334731f98e7a1edd553b52610bc4126 (plain)
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
;;; -*- lexical-binding: t; -*-

(setq kj/fastmail-maildir (expand-file-name "~/Maildir/fastmail"))

(setq notmuch-show-all-tags-list t
      notmuch-show-relative-dates t
      notmuch-hello-tag-list-make-query "tag:unread"
      notmuch-archive-tags '("-inbox" "-unread")
      notmuch-fcc-dirs nil)
(add-hook 'message-mode-hook 'turn-off-auto-fill)
(add-hook 'message-mode-hook 'visual-line-mode)

(defun kj/confirm-empty-subject ()
  "Allow user to quit when current message subject is empty."
  (or (message-field-value "Subject")
      (yes-or-no-p "Really send without Subject? ")
      (keyboard-quit)))

(add-hook 'message-send-hook #'kj/confirm-empty-subject)

(setq notmuch-saved-searches
      '((:name "inbox" :query "tag:inbox -tag:_gz" :key "i" :search-type tree)
        (:name "unread" :query "tag:unread" :key "u" :search-type tree)
        (:name "flagged" :query "tag:flagged" :key "f" :search-type tree)
        (:name "sent" :query "tag:sent" :key "t" :search-type tree)
        (:name "drafts" :query "tag:draft" :key "d" :search-type tree)
        (:name "all mail" :query "*" :key "a" :search-type tree)
        (:name "d" :query "tag:d-team tag:inbox" :search-type tree)))

(defun kj/notmuch-tree-by-tag (tag)
  (interactive
   (list (notmuch-select-tag-with-completion "Notmuch search tag: ")))
  (notmuch-tree (concat "tag:" tag)))

(define-key notmuch-hello-mode-map "T"
            'kj/notmuch-tree-by-tag)


(define-key notmuch-show-mode-map "!"
            (lambda ()
              "mark message as spam"
              (interactive)
              (notmuch-show-tag (list "+_gz" "-inbox"))))

(define-key notmuch-search-mode-map "!"
            (lambda (&optional beg end)
              "mark thread as spam"
              (interactive (notmuch-interactive-region))
              (notmuch-search-tag (list "+_gz" "-inbox") beg end)))

(when (file-exists-p kj/fastmail-maildir)
  (use-package notmuch)

  (setq message-mail-user-agent 'notmuch-user-agent
        message-kill-buffer-on-exit t
        message-send-mail-function 'message-send-mail-with-sendmail)

  (setq sendmail-program "mujmap"
        message-sendmail-extra-arguments (list "-C" kj/fastmail-maildir "send")))

(provide 'kj-email)