blob: 63d5844d09180877f346ce9773fe58f88d6bcc17 (
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
;;; ravi-init-mu.el --- mail
;; Copyright (C) 2014
;; Author: <ravi@nero.lan>
;; Keywords:
;; 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 <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Set up mu4e conditionally
;; - actual account information should be in local.el
;; - requires definitions of ravi/mu4e-account-alist
;;; Code:
(when ravi/use-mu-for-email
(use-package mu4e
:load-path ,(ravi/emacs-file "site-lisp/mu/mu4e")
:commands mu4e
:init
(progn
(unless ravi/mu4e-account-alist (error "Email account list not found")))
:config
(progn
;; Basic identity for sending mail
(require 'smtpmail)
(setq send-mail-function 'smtpmail-send-it)
(setq message-send-mail-function 'smtpmail-send-it)
;; Set up defaults from first account on the list
;; user-full-name
;; smtp-local-domain
;; user-mail-address
;; smtpmail-smtp-user
;; smtpmail-smtp-server
;; mu4e-sent-folder
;; mu4e-trash-folder
;; mu4e-refile-folder
(let* ((account (caar ravi/mu4e-account-alist))
(account-vars (cdr (assoc account ravi/mu4e-account-alist))))
(if account-vars
(mapc #'(lambda (var)
(set (car var) (cadr var)))
account-vars)
(error "No email account found")))
;; Choose correct SMTP identity wisely
(defun ravi/mu4e-set-account ()
"Set the account for composing a message."
(let* ((account
(if mu4e-compose-parent-message
(let ((maildir (mu4e-message-field mu4e-compose-parent-message :maildir)))
(string-match "/\\(.*?\\)/" maildir)
(match-string 1 maildir))
(if (= (length ravi/mu4e-account-alist) 1)
(caar ravi/mu4e-account-alist)
(completing-read (format "Compose with account: (%s) "
(mapconcat #'(lambda (var) (car var))
ravi/mu4e-account-alist "/"))
(mapcar #'(lambda (var) (car var)) ravi/mu4e-account-alist)
nil t nil nil (caar ravi/mu4e-account-alist)))))
(account-vars (cdr (assoc account ravi/mu4e-account-alist))))
(if account-vars
(mapc #'(lambda (var)
(set (car var) (cadr var)))
account-vars)
(error "No email account found"))))
(add-hook 'mu4e-compose-pre-hook 'ravi/mu4e-set-account)
;; Use async method of sending email, if possible
(use-package async
:config
(progn
(require 'smtpmail-async)
(setq send-mail-function 'async-smtpmail-send-it)
(setq message-send-mail-function 'async-smtpmail-send-it)
)
:ensure t
)
;; Basic mu4e configuration parameters
(setq mu4e-mu-binary (ravi/emacs-file "site-lisp/mu/mu/mu"))
(setq mu4e-maildir "~/.mail")
;; Currently, poll all accounts all the time == to do: fix mail intervals per account
(setq mu4e-get-mail-command (concat (ravi/emacs-file "site-lisp/isync/src/mbsync") " -a -q -q"))
(if (boundp 'ravi/mu4e-update-interval)
(setq mu4e-update-interval ravi/mu4e-update-interval)
(setq mu4e-update-interval 1800)) ; pull every 30 minutes
;; User interface
(setq mu4e-html-renderer 'w3m)
(setq mu4e-html2text-command "w3m -T text/html")
(setq mu4e-view-show-images t)
(when (boundp 'ravi/mu4e-maildir-shortcuts)
(setq mu4e-maildir-shortcuts ravi/mu4e-maildir-shortcuts))
(add-to-list 'mu4e-view-actions
'("ViewInBrowser" . mu4e-action-view-in-browser) t)
;; Show summary of all folders
(use-package mu4e-maildirs-extension
;;:config (mu4e-maildirs-extension) ; does not work with mu now
:ensure t
)
;; Allow attaching files from dired
(require 'gnus-dired)
;; make the `gnus-dired-mail-buffers' function also work on
;; message-mode derived modes, such as mu4e-compose-mode
(defun gnus-dired-mail-buffers ()
"Return a list of active message buffers."
(let (buffers)
(save-current-buffer
(dolist (buffer (buffer-list t))
(set-buffer buffer)
(when (and (derived-mode-p 'message-mode)
(null message-sent-message-via))
(push (buffer-name buffer) buffers))))
(nreverse buffers)))
(setq gnus-dired-mail-mode 'mu4e-user-agent)
(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
(add-to-list 'smart-tab-disabled-major-modes 'mu4e-compose-mode)
(imagemagick-register-types)
(add-to-list 'Info-default-directory-list (ravi/emacs-file "site-lisp/mu/mu4e"))
)
)
)
(provide 'ravi-init-mu)
;;; ravi-init-mu.el ends here
|