diff options
| author | Miquel Sabaté Solà <msabate@suse.com> | 2017-01-13 17:30:28 +0100 |
|---|---|---|
| committer | Miquel Sabaté Solà <msabate@suse.com> | 2017-01-13 17:30:28 +0100 |
| commit | 8b4b59dbf19f2affc3eaaf69d3cc38efeede3981 (patch) | |
| tree | f6c0c3f215f18aebab7294c8c2bf0002aeec2f5f /emacs/settings/init-mu4e.el | |
| parent | 2aa031d0a09882408e29de0f7ed67f1843d0b9f6 (diff) | |
| download | dotfiles-8b4b59dbf19f2affc3eaaf69d3cc38efeede3981.tar.gz dotfiles-8b4b59dbf19f2affc3eaaf69d3cc38efeede3981.zip | |
emacs: literate programming
Everything has been moved into an org file.
Signed-off-by: Miquel Sabaté Solà <msabate@suse.com>
Diffstat (limited to 'emacs/settings/init-mu4e.el')
| -rw-r--r-- | emacs/settings/init-mu4e.el | 262 |
1 files changed, 0 insertions, 262 deletions
diff --git a/emacs/settings/init-mu4e.el b/emacs/settings/init-mu4e.el deleted file mode 100644 index f0256a9..0000000 --- a/emacs/settings/init-mu4e.el +++ /dev/null @@ -1,262 +0,0 @@ -;;; init-mu4e.el --- Configuration for mu4e - -;; Copyright (C) 2016-2017 Miquel Sabaté Solà <mikisabate@gmail.com> -;; -;; 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. - -;;; Commentary: -;; -;; Configuration for mu4e. This configuration makes quite some assumptions. -;; Read the `emacs/README.md` file as provided in my `dotfiles` project to -;; get more details. - -;;; Code: - -; I'm using an RPM that I've built on OBS which installs mu4e globally. See: -; https://build.opensuse.org/package/show/home:mssola/mu -(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e") -(require 'mu4e) - -(when (featurep 'mu4e) - ;; Diferent SMTP options that will be used for each context. - - (setq message-send-mail-function 'smtpmail-send-it - mu4e-maildir (expand-file-name "~/.mail") - starttls-use-gnutls t) - - (defun mssola-smtp (server port) - "Set SMTP variables depending on the given SERVER and PORT." - - (require 'smtpmail) - - (setq smtpmail-starttls-credentials - '((server port nil nil)) - smtpmail-auth-credentials - (expand-file-name "~/.authinfo.gpg") - smtpmail-default-smtp-server server - smtpmail-smtp-server server - smtpmail-smtp-service port)) - - ;; Define the different accounts that I'm using. This is only available since - ;; mu 0.9.16. - - ; https://www.reddit.com/r/emacs/comments/47t9ec/share_your_mu4econtext_configs/d0fsih6 - (defun mu4e-message-maildir-matches (msg rx) - (when rx - (if (listp rx) - ;; if rx is a list, try each one for a match - (or (mu4e-message-maildir-matches msg (car rx)) - (mu4e-message-maildir-matches msg (cdr rx))) - ;; not a list, check rx - (string-match rx (mu4e-message-field msg :maildir))))) - - (defun suse-refile-folder (key) - "Returns the refile folder for the given SUSE account in the KEY arg" - (concat "/" key "/Archives/" - (format-time-string "%Y" (current-time)))) - - (setq mu4e-contexts - `( - ;; GMail - ,(make-mu4e-context - :name "gmail" - :enter-func (lambda () - (mu4e-message "Switching to gmail.com") - (mssola-smtp "smtp.gmail.com" 587)) - :match-func (lambda (msg) - (when msg - (mu4e-message-maildir-matches msg "^/gmail"))) - :vars '( - (user-mail-address . "mikisabate@gmail.com") - (mu4e-reply-to-address . "mikisabate@gmail.com") - (mu4e-drafts-folder . "/gmail/Drafts") - (mu4e-sent-folder . "/gmail/Sent") - (mu4e-refile-folder . "/gmail/All") - (mu4e-trash-folder . "/gmail/Trash"))) - - ;; suse.com - ,(make-mu4e-context - :name "comsuse" - :enter-func (lambda () - (mu4e-message "Switching to suse.com") - (mssola-smtp "smtp.novell.com" 25)) - :match-func (lambda (msg) - (when msg - (mu4e-message-maildir-matches msg "^/susecom"))) - :vars `( - (user-mail-address . "msabate@suse.com") - (mu4e-reply-to-address . "msabate@suse.com") - (mu4e-drafts-folder . "/susecom/Drafts") - (mu4e-sent-folder . "/susecom/Sent") - (mu4e-refile-folder . ,(suse-refile-folder "susecom")) - (mu4e-trash-folder . "/susecom/Trash"))) - - ;; suse.de - ,(make-mu4e-context - :name "desuse" - :enter-func (lambda () - (mu4e-message "Switching to suse.de") - (mssola-smtp "imap.suse.de" 587)) - :match-func (lambda (msg) - (when msg - (mu4e-message-maildir-matches msg "^/susede"))) - :vars `( - (user-mail-address . "msabate@suse.de") - (mu4e-reply-to-address . "msabate@suse.de") - (mu4e-drafts-folder . "/susede/Drafts") - (mu4e-sent-folder . "/susede/Sent") - (mu4e-refile-folder . ,(suse-refile-folder "susede")) - (mu4e-trash-folder . "/susede/Trash"))))) - - ; If mu4e cannot figure things out, ask me. - (setq mu4e-context-policy 'ask) - (setq mu4e-compose-context-policy 'ask) - - ; Fill the `mu4e-user-mail-address-list' variable with the 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))) - - ; Setting my bookmarks - (setq mu4e-bookmarks - '(("maildir:/gmail/inbox OR maildir:/susecom/inbox OR maildir:/susede/inbox" "Inbox Folders" ?n) - ("flag:unread AND NOT flag:trashed" "Unread messages" ?u) - ("date:today..now" "Today's messages" ?t))) - - ; Signature. This signature looks alright regardless of whether the client - ; supports format=flowed or not. - (setq mu4e-compose-signature - (concat - "Miquel Sabaté Solà,\n" - "PGP: 4096R / 1BA5 3C7A C93D CA2A CFDF DA97 96BE 8C6F D89D 6565\n")) - - ; Sign outgoing emails always. - (add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime) - - ;; To avoid UID clashes. See: - ;; http://pragmaticemacs.com/emacs/fixing-duplicate-uid-errors-when-using-mbsync-and-mu4e/ - (setq mu4e-change-filenames-when-moving t) - - ; Miscellaneous settings. - (setq mu4e-html2text-command "w3m -T text/html" - mu4e-attachment-dir "~/Downloads" - mu4e-headers-date-format "%Y-%m-%d %H:%M" - message-citation-line-format "%N @ %Y-%m-%d %H:%M %Z:\n" - message-citation-line-function 'message-insert-formatted-citation-line - message-kill-buffer-on-exit t - mu4e-get-mail-command "mbsync -aqV" - mu4e-update-interval 600 - mu4e-compose-dont-reply-to-self t - mu4e-compose-format-flowed t - mu4e-headers-skip-duplicates t - mu4e-headers-include-related t - mu4e-headers-auto-update t) - - ;; The headers to show in the headers list a pair of a field and its width, - ;; with `nil' meaning 'unlimited' (better only use that for the last field. - ;; These are the defaults: - (setq mu4e-headers-fields - '( (:date . 18) - (:mailing-list . 15) - (:from-or-to . 20) - (:subject . nil))) - - ; Show images - (setq mu4e-view-show-images t - mu4e-view-image-max-width 800) - - ; Use imagemagick, if available - (when (fboundp 'imagemagick-register-types) - (imagemagick-register-types)) - - ; As of 0.9.18 and GNU Emacs 25, the mu4e-action-with-xwidget can be used to - ; render an HTML message with Webkit. - (if (>= emacs-major-version 25) - (add-to-list 'mu4e-view-actions - '("webkit" . mu4e-action-view-with-xwidget))) - - ; Look for mu4e-msg2pdf in the exec path. - (let ((exec (locate-file "msg2pdf" exec-path exec-suffixes))) - (if exec - (setq mu4e-msg2pdf exec))) - - ;; Addings hooks for composing and viewing messages. - - (defun mssola-compose-mode () - "My settings for message composition." - - ; If we are composing an email from scratch, it's more convenient to be in - ; insert mode. Otherwise start with normal mode. - (with-eval-after-load 'evil - (if mu4e-compose-parent-message - (evil-set-initial-state 'mu4e-compose-mode 'normal) - (evil-set-initial-state 'mu4e-compose-mode 'insert))) - - ; Guess hard newlines - (use-hard-newlines t 'guess) - - ; So it's easy to encrypt/decrypt emails. - (epa-mail-mode) - - ; Spellz - (flyspell-mode)) - - (add-hook 'mu4e-compose-mode-hook 'mssola-compose-mode) - - ; I want to read messages in the format that the sender used. I'm also - ; enabling epa-mail-mode, so it's easy to decrypt received emails. - (add-hook 'mu4e-view-mode-hook - (lambda () - (epa-mail-mode) - (visual-line-mode 1))) - - ;; Helper packages. - - ; Desktop notifications - (use-package mu4e-alert - :ensure t - :config - - ; Notify me for unread emails from my inbox. - (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) - (setq mu4e-alert-interesting-mail-query - (concat - "(maildir:/gmail/inbox OR maildir:/susecom/inbox OR maildir:/susede/inbox) " - "AND flag:unread AND NOT flag:trashed")) - (setq mu4e-alert-email-notification-types '(count))) - - ; Evil mode in mu4e - (with-eval-after-load 'evil - (use-package evil-mu4e - :ensure t - :config - - ; Idea taken from evil-mu4e.el - (defvar mssola-evil-mu4e-mode-map-bindings - `((,evil-mu4e-state mu4e-headers-mode-map "\C-u" evil-scroll-up) - (,evil-mu4e-state mu4e-main-mode-map "\C-u" evil-scroll-up) - (,evil-mu4e-state mu4e-view-mode-map "h" evil-backward-char))) - - (dolist (binding mssola-evil-mu4e-mode-map-bindings) - (evil-define-key - (nth 0 binding) (nth 1 binding) (nth 2 binding) (nth 3 binding))))) - - ; Define a proper shortcut. - (global-set-key (kbd "C-c m") 'mu4e)) - -(provide 'init-mu4e) -;;; init-mu4e.el ends here |
