From 9df8349d86ec19fc1102b607fe331a3fb749dd52 Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Thu, 25 Feb 2016 22:21:04 +0800 Subject: _emacs.d/personal: 50-mu4e.el -> 60-mu4e.el to change load order --- _emacs.d/personal/50-mu4e.el | 334 ------------------------------------------- 1 file changed, 334 deletions(-) delete mode 100644 _emacs.d/personal/50-mu4e.el (limited to '_emacs.d/personal/50-mu4e.el') diff --git a/_emacs.d/personal/50-mu4e.el b/_emacs.d/personal/50-mu4e.el deleted file mode 100644 index c5947b2..0000000 --- a/_emacs.d/personal/50-mu4e.el +++ /dev/null @@ -1,334 +0,0 @@ -;;; ~/.emacs.d/personal/50-mu4e.el --- mu4e (mu for Emacs) configurations -;; -;; -*- mode: emacs-lisp -*- -;; vim: set ts=8 sw=2 tw=0 fenc=utf-8 ft=lisp: -;; -;; Aaron LI -;; 2016-02-21 -;; - -;;; Commentary: -;; mu4e (mu for Emacs) configurations with some extensions. -;; mu (maildir indexer/searcher): https://github.com/djcb/mu - -;;; Code: - -;; mu4e package -;(add-to-list 'load-path "~/local/emacs/site-lisp/mu4e") -(add-to-list 'load-path (expand-file-name "mu4e" prelude-personal-dir)) -(require 'mu4e) - -;; turn on debug: log debug information to the *mu4e-log* buffer -(setq mu4e-debug t) - -(setq mu4e-maildir "~/mail") - -;; multiple email accounts: contexts (require mu4e >= 0.9.16) -(setq mu4e-contexts - `( ,(make-mu4e-context - :name "Outlook-aly" - :enter-func (lambda () - (mu4e-message "Switched to context: outlook-aly")) - ;; `leave-func' not defined - ;; `match-func' is invoked just before `mu4e-compose-pre-hook' - :match-func (lambda (msg) - (when msg - (mu4e-message-contact-field-matches msg - :to "aaronly.me@outlook.com"))) - :vars '((user-mail-address . "aaronly.me@outlook.com") - (user-full-name . "Aaron LI") - (mu4e-sent-folder . "/outlook-aly/sent") - (mu4e-drafts-folder . "/outlook-aly/drafts") - (mu4e-trash-folder . "/outlook-aly/trash") - (mu4e-refile-folder . "/outlook-aly/archive") - (mu4e-compose-signature . "Aly") - (mu4e-sent-messages-behavior . delete))) - ,(make-mu4e-context - :name "Gmail-aly" - :enter-func (lambda () - (mu4e-message "Switched to context: gmail-aly")) - ;; `leave-func' not defined - :match-func (lambda (msg) - (when msg - (mu4e-message-contact-field-matches msg - :to "aaronly.me@gmail.com"))) - :vars '((user-mail-address . "aaronly.me@gmail.com") - (user-full-name . "Aaron LI") - ;; special folders - (mu4e-sent-folder . "/sent") - (mu4e-drafts-folder . "/gmail-aly/drafts") - (mu4e-trash-folder . "/gmail-aly/trash") - (mu4e-refile-folder . "/gmail-aly/archive") - (mu4e-compose-signature . "Aly") - ;; do NOT save message to 'sent-folder' - (mu4e-sent-messages-behavior . delete))) - ,(make-mu4e-context - :name "outlook-li" - :enter-func (lambda () - (mu4e-message "Switched to context: outlook-li")) - ;; `leave-func' not defined - :match-func (lambda (msg) - (when msg - (mu4e-message-contact-field-matches msg - :to '("liweitianux@live.com" - "liweitianux@outlook.com")))) - :vars '((user-mail-address . "liweitianux@live.com") - (user-full-name . "Weitian LI") - (mu4e-sent-folder . "/outlook-li/sent") - (mu4e-drafts-folder . "/outlook-li/drafts") - (mu4e-trash-folder . "/outlook-li/trash") - (mu4e-refile-folder . "/outlook-li/archive") - (mu4e-compose-signature . "Weitian LI") - (mu4e-sent-messages-behavior . delete))) - ,(make-mu4e-context - :name "gmail-li" - :enter-func (lambda () - (mu4e-message "Switched to context: gmail-li")) - ;; `leave-func' not defined - :match-func (lambda (msg) - (when msg - (mu4e-message-contact-field-matches msg - :to "liweitianux@gmail.com"))) - :vars '((user-mail-address . "liweitianux@gmail.com") - (user-full-name . "Weitian LI") - (mu4e-sent-folder . "/sent") - (mu4e-drafts-folder . "/gmail-li/drafts") - (mu4e-trash-folder . "/gmail-li/trash") - (mu4e-refile-folder . "/gmail-li/archive") - (mu4e-compose-signature . "Weitian LI") - (mu4e-sent-messages-behavior . delete))) - ,(make-mu4e-context - :name "sjtu" - :enter-func (lambda () - (mu4e-message "Switched to context: sjtu")) - ;; `leave-func' not defined - :match-func (lambda (msg) - (when msg - (mu4e-message-contact-field-matches msg - :to "liweitianux@sjtu.edu.cn"))) - :vars '((user-mail-address . "liweitianux@sjtu.edu.cn") - (user-full-name . "Weitian LI") - (mu4e-sent-folder . "/sjtu/sent") - (mu4e-drafts-folder . "/sjtu/drafts") - (mu4e-trash-folder . "/sjtu/trash") - (mu4e-refile-folder . "/sjtu/archive") - (mu4e-compose-signature . - (concat "Weitian LI\n" - "Department of Physics and Astronomy\n" - "Shanghai Jiao Tong University")) - ;; copy message to sent folder - (mu4e-sent-messages-behavior . sent))) - ,(make-mu4e-context - :name "autistici" - :enter-func (lambda () - (mu4e-message "Switched to context: autistici")) - ;; `leave-func' not defined - :match-func (lambda (msg) - (when msg - (mu4e-message-contact-field-matches msg - :to "liweitianux@autistici.org"))) - :vars '((user-mail-address . "liweitianux@autistici.org") - (user-full-name . "Weitian LI") - (mu4e-sent-folder . "/autistici/sent") - (mu4e-drafts-folder . "/autistici/drafts") - (mu4e-trash-folder . "/autistici/trash") - (mu4e-refile-folder . "/autistici/archive") - (mu4e-compose-signature . "Weitian LI") - ;; copy message to sent folder - (mu4e-sent-messages-behavior . sent))) - ,(make-mu4e-context - :name "foxmail" - :enter-func (lambda () - (mu4e-message "Switched to context: foxmail")) - ;; `leave-func' not defined - :match-func (lambda (msg) - (when msg - (mu4e-message-contact-field-matches msg - :to '("liweitianux@foxmail.com" - "527922216@qq.com")))) - :vars '((user-mail-address . "liweitianux@foxmail.com") - (user-full-name . "Weitian LI") - (mu4e-sent-folder . "/foxmail/sent") - (mu4e-drafts-folder . "/foxmail/drafts") - (mu4e-trash-folder . "/foxmail/trash") - (mu4e-refile-folder . "/foxmail/archive") - (mu4e-compose-signature . "Weitian LI") - (mu4e-sent-messages-behavior . delete))))) - -;; start with the first (default) context -;; default: `ask-if-none' (ask when there's no context yet, and none match) -(setq mu4e-context-policy 'pick-first) -;; compose with the current context if no context matches -;; default: `ask' -(setq mu4e-compose-context-policy nil) - -;; auto construct addresses list by extracting addresses from contexts -(setq mu4e-user-mail-address-list - (delq nil - (mapcar (lambda (context) - (when (mu4e-context-vars context) - (cdr (assq 'user-mail-address - (mu4e-context-vars context))))) - mu4e-contexts))) - -;; send mail using `msmtp' -(setq message-send-mail-function 'message-send-mail-with-sendmail - message-sendmail-f-is-evil t - ;; choose the account according to the `From' header - message-sendmail-extra-arguments '("--read-envelope-from") - sendmail-program "msmtp") - -;; allow for fetch mail and update index using 'U' in the main view -(setq mu4e-get-mail-command "offlineimap -o -1") -;(setq mu4e-get-mail-command "true" nil nil -; "Disable fetching mail as it is done by a daemon") -;; get mail and update index periodically in the background (unit: seconds) -(setq mu4e-update-interval 900) - -;; frequent mail folders, with shortcuts -;; do not use shortcut `o' as it is used for `[o]ther' -(setq mu4e-maildir-shortcuts - '(("/important" . ?i) - ("/archive" . ?a) - ("/gmail-aly/archive" . ?G) - ("/gmail-li/archive" . ?g) - ("/outlook-aly/inbox" . ?l) - ("/outlook-li/inbox" . ?L) - ("/sjtu/inbox" . ?s))) - -;; do not keep message buffers around -(setq message-kill-buffer-on-exit t) - -;; enable inline images -(setq mu4e-view-show-images t) -;; use imagemagick if available -(when (fboundp 'imagemagick-register-types) - (imagemagick-register-types)) - -;; display rich-text messages -(require 'mu4e-contrib) -;; use `shr' html renderer; reqiure emacs >= 24.4 -(setq mu4e-html2text-command 'mu4e-shr2text) -(add-hook 'mu4e-view-mode-hook - (lambda () - ;; try to emulate some of the `eww' key-bindings - (local-set-key (kbd "") 'shr-next-link) - (local-set-key (kbd "") 'shr-previous-link))) -;; change the luminosity form dark theme -(setq shr-color-visible-luminance-min 70) - -;; customize bookmarks -(defvar mu4e-bookmarks - '(("flag:unread AND NOT flag:trashed" "Unread messages" ?u) - ("date:today..now" "Today's messages" ?t) - ("date:7d..now" "Last 7 days" ?w) - ("flag:flagged" "Flagged messages" ?f) - ("tag:astro" "Astro" ?a) - ("tag:arxiv" "arXiv" ?x) - ("mime:image/*" "Messages with images" ?p))) - -;; headers list appearance -(setq mu4e-headers-date-format "%Y-%m-%d %H:%M" - mu4e-headers-fields '((:date . 18) ;; also :human-date - (:flags . 5) - (:from-or-to . 22) - (:subject . nil))) ;; also :thread-subject - -;; use fancy non-ascii characters in various places -;(setq mu4e-use-fancy-chars t) - -;; show full addresses instead of just names when view message -(setq mu4e-view-show-addresses t) - -;; also include messages related to the searched messages -(setq mu4e-headers-include-related t) -;; exclude the duplicate messages with the same `Message-ID' -;(setq mu4e-headers-skip-duplicates t) - -;; confirm before sending -(add-hook 'message-send-hook - (lambda () - (unless (yes-or-no-p "Sure you want to send this?") - (signal 'quit nil)))) - -;; apply "format=flowed" to outgoing messages, enabling receiving clients -;; that supports this feature to reflow the paragraphs. (from mu4e FAQ) -(add-hook 'mu4e-compose-mode-hook - (defun cpb-compose-setup () - "Outgoing mails get `format=flowed'." - (use-hard-newlines t 'guess))) - -;; custom actions -;; retag action -(setq mu4e-action-tags-header "X-Keywords") -(add-to-list 'mu4e-headers-actions - '("tRetag message" . mu4e-action-retag-message) t) -(add-to-list 'mu4e-view-actions - '("tRetag message" . mu4e-action-retag-message) t) -;; view in browser -(add-to-list 'mu4e-view-actions - '("bView in browser" . mu4e-action-view-in-browser) t) -;; search for messages by the sender of the opened message -(defun search-for-sender (msg) - "Search for messages sent by the sender of the message at point." - (mu4e-headers-search - (concat "from:" (cdar (mu4e-message-field msg :from))))) -(add-to-list 'mu4e-view-actions - '("xSearch for sender" . search-for-sender) t) - -;; set `mu4e' as emacs' default email program -(setq mail-user-agent 'mu4e-user-agent) - - -;;; mu4e extensions - -;; evil-mu4e -;; https://github.com/JorisE/evil-mu4e -(prelude-require-package 'evil-mu4e) -(require 'evil-mu4e) - -;; mu4e-maildirs-extension -;; https://github.com/agpchil/mu4e-maildirs-extension -(prelude-require-package 'mu4e-maildirs-extension) -(require 'mu4e-maildirs-extension) -(mu4e-maildirs-extension) - -;; mu4e-alert -;; https://github.com/iqbalansari/mu4e-alert -(prelude-require-package 'mu4e-alert) -(mu4e-alert-set-default-style 'libnotify) -(add-hook 'after-init-hook #'mu4e-alert-enable-notifications) -(add-hook 'after-init-hook #'mu4e-alert-enable-mode-line-display) - - -;;; Key bindings for Evil -;; Credits: -;; https://github.com/philc/emacs-config - .emacs.d/elisp/mu4e-mode-personal.el -(with-eval-after-load "mu4e" - ;(evil-make-overriding-map mu4e-main-mode-map 'normal t) - (evil-define-key 'normal mu4e-main-mode-map - "q" 'vimlike-quit) - ;; - ;(evil-make-overriding-map mu4e-headers-mode-map 'normal t) - (evil-define-key 'normal mu4e-headers-mode-map - "C" 'mu4e-compose-new - "F" 'mu4e-compose-forward - "R" 'mu4e-compose-reply - "U" '(lambda () (mu4e-update-mail-and-index t))) - ;; - ;(evil-make-overriding-map mu4e-view-mode-map 'normal t) - (evil-define-key 'normal mu4e-view-mode-map - "C" 'mu4e-compose-new - "F" 'mu4e-compose-forward - "R" 'mu4e-compose-reply - "U" '(lambda () (mu4e-update-mail-and-index t))) - (evil-leader/set-key-for-mode 'mu4e-view-mode - "s" 'mu4e-view-raw-message) - ;; - (evil-leader/set-key-for-mode 'mu4e-compose-mode - "," 'message-send-and-exit - "c" 'message-send-and-exit - "k" 'mu4e-message-kill-buffer - "a" 'mml-attach-file)) - -;;; 50-mu4e.el ends here -- cgit v1.2.2