summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrekado <rekado@elephly.net>2016-11-18 15:54:02 +0100
committerrekado <rekado@elephly.net>2016-11-23 15:32:31 +0100
commita982fd37d3f8b2314efc67b6a549c8437d2a20b9 (patch)
tree581d25c5497de2b2b28372df4227e20362418eef
parentc9588cf1820a761f742c75273d65adba3fc35f08 (diff)
email: Use contexts.
-rw-r--r--lisp/email.el246
1 files changed, 123 insertions, 123 deletions
diff --git a/lisp/email.el b/lisp/email.el
index 00bbfbd..5ba82af 100644
--- a/lisp/email.el
+++ b/lisp/email.el
@@ -23,81 +23,13 @@
(setq mu4e-html2text-command 'mu4e-shr2text)
(setq mu4e-view-show-images t)
-(defun my/mu4e-trash-folder (msg)
- "Do not copy mails across maildirs to trash them."
- (let ((dir (and msg
- (mu4e-message-field-raw msg :maildir))))
- (cond
- ((not dir) "/private/Trash")
- ((string-prefix-p "/mdc-personal" dir)
- "/mdc-personal/Deleted Items")
- (t (let ((prefix (cadr (split-string dir "/"))))
- (concat "/" prefix "/Trash"))))))
-
-(defun my/mu4e-refile-folder (msg)
- "Do not copy mails across maildirs to archive them."
- (let ((dir (and msg
- (mu4e-message-field-raw msg :maildir))))
- (cond
- ((not dir) "/private/Archives")
- ((string-prefix-p "/mdc-personal" dir)
- "/mdc-personal/Archive")
- (t (let ((prefix (cadr (split-string dir "/"))))
- (concat "/" prefix "/Archives"))))))
-
;; use imagemagick, if available
(when (fboundp 'imagemagick-register-types)
(imagemagick-register-types))
(setq mu4e-maildir "~/Mail"
mu4e-attachment-dir "~/Downloads"
- mu4e-sent-folder "/private/Sent"
- mu4e-drafts-folder "/private/Drafts"
- mu4e-trash-folder 'my/mu4e-trash-folder
- mu4e-refile-folder 'my/mu4e-refile-folder
- user-mail-address (rot13 "erxnqb@ryrcuyl.arg"))
-
-(defvar my-mu4e-account-alist
- `(("mdc-personal"
- (user-mail-address ,(rot13 "evpneqb.jhezhf@zqp-oreyva.qr"))
- (user-full-name ,(rot13 "Evpneqb Jhezhf"))
- (mu4e-sent-folder "/mdc-personal/Sent Items")
- (mu4e-drafts-folder "/mdc-personal/Drafts"))
- ("private"
- (user-mail-address ,(rot13 "erxnqb@ryrcuyl.arg"))
- (user-full-name ,(rot13 "Evpneqb Jhezhf"))
- (mu4e-sent-folder "/private/Sent")
- (mu4e-drafts-folder "/private/Drafts"))
- ("fhaindojo"
- (user-mail-address ,(rot13 "erxnqb@sunva.pbqreqbwb.oreyva"))
- (user-full-name ,(rot13 "Evpneqb Jhezhf"))
- (mu4e-sent-folder "/fhaindojo/Sent")
- (mu4e-drafts-folder "/fhaindojo/Drafts"))))
-
-(setq mu4e-user-mail-address-list
- (mapcar (lambda (account) (cadr (assq 'user-mail-address account)))
- my-mu4e-account-alist))
-
-(defun my-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))
- (completing-read (format "Compose with account: (%s) "
- (mapconcat #'(lambda (var) (car var))
- my-mu4e-account-alist "/"))
- (mapcar #'(lambda (var) (car var)) my-mu4e-account-alist)
- nil t nil nil (caar my-mu4e-account-alist))))
- (account-vars (cdr (assoc account my-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 'my-mu4e-set-account)
+ mu4e-compose-signature-auto-include t)
;; pretty quotes!
(add-hook 'message-mode-hook
@@ -105,60 +37,59 @@
(require 'typo)
(typo-mode 1)))
-(let ((guix "(list:guix-devel@gnu.org OR list:bug-guix@gnu.org OR list:help-guix@gnu.org OR list:guix-sysadmin@gnu.org OR list:guix-security.gnu.org)")
- (guile "(list:guile-user@gnu.org OR list:guile-devel@gnu.org OR list:bug-guile@gnu.org)")
- (emacs "(list:emacs-devel@gnu.org)")
- (security "(list:oss-security@lists.openwall.com)")
- (lilypond "(list:lilypond-devel@gnu.org)")
- (eoma "(list:arm-netbook@lists.phcomp.co.uk)")
- (fsfe "(subject:\"Willkommen in der FSFE\" list:berlin-bounces@lists.fsfe.org OR list:berlin-owner@lists.fsfe.org OR list:coordinators@lists.fsfe.org OR list:berlin@lists.fsfe.org OR list:newsletter-en@fsfeurope.org OR list:newsletter-de@fsfeurope.org)")
- (dojo "(list:coderdojo-berlin-discussion@googlegroups.com OR to:hello@fhain.coderdojo.berlin)")
- (unread "(flag:unread AND NOT flag:trashed)")
- (me "(body:rekado OR body:Ricardo)"))
- (setq mu4e-bookmarks
- (list
- ;; TODO: don't match my own signature
- (list (concat me " " unread)
- "Mentioning me (unread)" ?R)
- (list "maildir:\"/private/INBOX\""
- "Personal inbox" ?i)
- (list "date:today..now"
- "Today's messages" ?t)
- (list "date:today..now"
- "Last 7 days" ?w)
- (list (concat "maildir:\"/private/INBOX\"" " " unread)
- "Unread messages (private)" ?u)
- (list (concat guix " " unread)
- "Guix" ?1)
- (list (concat guile " " unread)
- "Guile" ?2)
- (list (concat lilypond " " unread)
- "Lilypond" ?3)
- (list (concat fsfe " " unread)
- "FSFE" ?4)
- (list (concat dojo " " unread)
- "CoderDojo" ?5)
- (list (concat eoma " " unread)
- "EOMA68" ?6)
- (list (concat emacs " " unread)
- "Emacs" ?7)
- (list (concat security " " unread)
- "Security" ?8)
- (list (concat "maildir:\"/private/mailinglists\""
- " " unread
- " NOT " guix
- " NOT " guile
- " NOT " lilypond
- " NOT " fsfe
- " NOT " eoma
- " NOT " emacs
- " NOT " security
- " NOT " dojo)
- "Unread list messages" ?m)
- (list "maildir:\"/private/INBOX\" flag:flagged"
- "Flagged (private)" ?f)
- (list "maildir:\"/mdc-personal/INBOX\" flag:flagged"
- "Flagged (work)" ?g))))
+(defun my/set-mu4e-bookmarks (maildir)
+ (let ((guix "(list:guix-devel@gnu.org OR list:bug-guix@gnu.org OR list:help-guix@gnu.org OR list:guix-sysadmin@gnu.org OR list:guix-security.gnu.org)")
+ (guile "(list:guile-user@gnu.org OR list:guile-devel@gnu.org OR list:bug-guile@gnu.org)")
+ (emacs "(list:emacs-devel@gnu.org)")
+ (security "(list:oss-security@lists.openwall.com)")
+ (lilypond "(list:lilypond-devel@gnu.org)")
+ (eoma "(list:arm-netbook@lists.phcomp.co.uk)")
+ (fsfe "(subject:\"Willkommen in der FSFE\" list:berlin-bounces@lists.fsfe.org OR list:berlin-owner@lists.fsfe.org OR list:coordinators@lists.fsfe.org OR list:berlin@lists.fsfe.org OR list:newsletter-en@fsfeurope.org OR list:newsletter-de@fsfeurope.org)")
+ (dojo "(list:coderdojo-berlin-discussion@googlegroups.com OR to:hello@fhain.coderdojo.berlin)")
+ (unread "(flag:unread AND NOT flag:trashed)")
+ (me "(body:rekado OR body:Ricardo)"))
+ (setq mu4e-bookmarks
+ (list
+ ;; TODO: don't match my own signature
+ (list (concat me " " unread)
+ "Mentioning me (unread)" ?R)
+ (list (concat "maildir:\"/" maildir "/INBOX\"")
+ "Inbox" ?i)
+ (list "date:today..now"
+ "Today's messages" ?t)
+ (list "date:today..now"
+ "Last 7 days" ?w)
+ (list (concat "maildir:\"/" maildir "/INBOX\"" " " unread)
+ "Unread messages" ?u)
+ (list (concat guix " " unread)
+ "Guix" ?1)
+ (list (concat guile " " unread)
+ "Guile" ?2)
+ (list (concat lilypond " " unread)
+ "Lilypond" ?3)
+ (list (concat fsfe " " unread)
+ "FSFE" ?4)
+ (list (concat dojo " " unread)
+ "CoderDojo" ?5)
+ (list (concat eoma " " unread)
+ "EOMA68" ?6)
+ (list (concat emacs " " unread)
+ "Emacs" ?7)
+ (list (concat security " " unread)
+ "Security" ?8)
+ (list (concat "maildir:\"/private/mailinglists\""
+ " " unread
+ " NOT " guix
+ " NOT " guile
+ " NOT " lilypond
+ " NOT " fsfe
+ " NOT " eoma
+ " NOT " emacs
+ " NOT " security
+ " NOT " dojo)
+ "Unread list messages" ?m)
+ (list (concat "maildir:\"/" maildir "/INBOX\" flag:flagged")
+ "Flagged" ?f)))))
; set up email sending with msmtp
(setq mail-user-agent 'mu4e-user-agent)
@@ -205,3 +136,72 @@
'("git am" . mu4e-action-git-apply-mbox))
(add-to-list 'mu4e-headers-actions
'("git am" . mu4e-action-git-apply-mbox))
+
+(setq mu4e-contexts
+ (list (make-mu4e-context
+ :name "Private"
+ :enter-func (lambda ()
+ (mu4e-message "Switch to the Private context")
+ (my/set-mu4e-bookmarks "private"))
+ :match-func (lambda (msg)
+ (when msg
+ (or (mu4e-message-contact-field-matches
+ msg :to (rot13 "erxnqb@ryrcuyl.arg")))))
+ :vars `((user-mail-address . ,(rot13 "erxnqb@ryrcuyl.arg"))
+ (user-full-name . ,(rot13 "Evpneqb Jhezhf"))
+ (mu4e-sent-folder . "/private/Sent")
+ (mu4e-trash-folder . "/private/Trash")
+ (mu4e-refile-folder . "/private/Archives")
+ (mu4e-drafts-folder . "/private/Drafts")
+ (mu4e-compose-signature . "Ricardo
+
+GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC
+http://elephly.net")))
+ (make-mu4e-context
+ :name "CoderDojo"
+ :enter-func (lambda ()
+ (mu4e-message "Switch to the CoderDojo context")
+ (my/set-mu4e-bookmarks "fhaindojo"))
+ :match-func (lambda (msg)
+ (when msg
+ (or (mu4e-message-contact-field-matches
+ msg :to (rot13 "erxnqb@sunva.pbqreqbwb.oreyva"))
+ (mu4e-message-contact-field-matches
+ msg :to (rot13 "uryyb@sunva.pbqreqbwb.oreyva")))))
+ :vars `((user-mail-address . ,(rot13 "erxnqb@sunva.pbqreqbwb.oreyva"))
+ (user-full-name . ,(rot13 "Evpneqb Jhezhf"))
+ (mu4e-sent-folder . "/fhaindojo/Sent")
+ (mu4e-trash-folder . "/fhaindojo/Trash")
+ (mu4e-refile-folder . "/fhaindojo/Archive")
+ (mu4e-drafts-folder . "/fhaindojo/Drafts")
+ (mu4e-compose-signature . "Ricardo
+
+GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC
+http://elephly.net")))
+ (make-mu4e-context
+ :name "Work"
+ :enter-func (lambda ()
+ (mu4e-message "Switch to the Work context")
+ (my/set-mu4e-bookmarks "mdc-personal"))
+ :match-func (lambda (msg)
+ (when msg
+ (or (mu4e-message-contact-field-matches
+ msg :to (rot13 "evpneqb.jhezhf@zqp-oreyva.qr")))))
+ :vars `((user-mail-address . ,(rot13 "evpneqb.jhezhf@zqp-oreyva.qr"))
+ (user-full-name . ,(rot13 "Evpneqb Jhezhf"))
+ (mu4e-sent-folder . "/mdc-personal/Sent Items")
+ (mu4e-trash-folder . "/mdc-personal/Deleted Items")
+ (mu4e-refile-folder . "/mdc-personal/Archive")
+ (mu4e-drafts-folder . "/mdc-personal/Drafts")
+ (mu4e-compose-signature . ,(rot13 (concat "\
+Evpneqb Jhezhf
+
+Flfgrz nqzvavfgengbe
+OVZFO - Fpvragvsvp Ovbvasbezngvpf Cyngsbez
+Znk Qryoehrpx Pragre sbe Zbyrphyne Zrqvpvar
+
+Eboreg-Eöffyr-Fge. 10, 13125, Oreyva, Treznal
+Ohvyqvat 89, Ebbz 1.08
+
+rznvy: evpneqb.jhezhf@zqp-oreyva.qr
+gry: +49 30 9406 " (number-to-string (+ (* 1 2 2 3 4 5 6) (expt 2 8) 100)))))))))