diff options
author | rekado <rekado@elephly.net> | 2016-11-18 15:54:02 +0100 |
---|---|---|
committer | rekado <rekado@elephly.net> | 2016-11-23 15:32:31 +0100 |
commit | a982fd37d3f8b2314efc67b6a549c8437d2a20b9 (patch) | |
tree | 581d25c5497de2b2b28372df4227e20362418eef | |
parent | c9588cf1820a761f742c75273d65adba3fc35f08 (diff) |
email: Use contexts.
-rw-r--r-- | lisp/email.el | 246 |
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))))))))) |