spacemacs/layers/+email/mu4e/packages.el
wigust 9c585370e6 mu4e: Create email with attachments from dired
Attachments are mostly handled using the helm baloo interface below,
but sometimes we want to send files from a directory: C-c C-m C-a
2018-01-20 00:06:17 -05:00

151 lines
5.1 KiB
EmacsLisp

;;; packages.el --- mu4e Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(setq mu4e-packages
'(
(mu4e :location site)
mu4e-alert
mu4e-maildirs-extension
(helm-mu :requires helm)
org
persp-mode
))
(defun mu4e/post-init-persp-mode ()
(spacemacs|define-custom-layout mu4e-spacemacs-layout-name
:binding mu4e-spacemacs-layout-binding
:body
(progn
(defun spacemacs-layouts/add-mu4e-buffer-to-persp ()
(persp-add-buffer (current-buffer)
(persp-get-by-name
mu4e-spacemacs-layout-name)))
(spacemacs/add-to-hooks 'spacemacs-layouts/add-mu4e-buffer-to-persp
'(mu4e-main-mode-hook
mu4e-headers-mode-hook
mu4e-view-mode-hook
mu4e-compose-mode-hook))
(call-interactively 'mu4e)
(call-interactively 'mu4e-update-index))))
(defun mu4e/init-mu4e ()
(use-package mu4e
:commands (mu4e mu4e-compose-new)
:init
(progn
(spacemacs/set-leader-keys "a M" 'mu4e)
(global-set-key (kbd "C-x m") 'mu4e-compose-new)
(setq mu4e-completing-read-function 'completing-read
mu4e-use-fancy-chars 't
mu4e-view-show-images 't
message-kill-buffer-on-exit 't)
(let ((dir "~/Downloads"))
(when (file-directory-p dir)
(setq mu4e-attachment-dir dir))))
:config
(progn
(evilified-state-evilify-map mu4e-main-mode-map
:mode mu4e-main-mode
:bindings
(kbd "j") 'mu4e~headers-jump-to-maildir)
(evilified-state-evilify-map
mu4e-headers-mode-map
:mode mu4e-headers-mode
:bindings
(kbd "C-j") 'mu4e-headers-next
(kbd "C-k") 'mu4e-headers-prev
(kbd "J") (lambda ()
(interactive)
(mu4e-headers-mark-thread nil '(read))))
(evilified-state-evilify-map
mu4e-view-mode-map
:mode mu4e-view-mode
:bindings
(kbd "C-j") 'mu4e-view-headers-next
(kbd "C-k") 'mu4e-view-headers-prev
(kbd "J") (lambda ()
(interactive)
(mu4e-view-mark-thread '(read))))
(spacemacs/set-leader-keys-for-major-mode 'mu4e-compose-mode
dotspacemacs-major-mode-leader-key 'message-send-and-exit
"c" 'message-send-and-exit
"k" 'message-kill-buffer
"a" 'message-kill-buffer
"s" 'message-dont-send ; saves as draft
"f" 'mml-attach-file)
(when mu4e-enable-async-operations
(require 'smtpmail-async)
(setq send-mail-function 'async-smtpmail-send-it
message-send-mail-function 'async-smtpmail-send-it))
(when (fboundp 'imagemagick-register-types)
(imagemagick-register-types))
(add-to-list 'mu4e-view-actions
'("View in browser" . mu4e-action-view-in-browser) t)
(add-hook 'mu4e-compose-mode-hook
(lambda () (use-hard-newlines t 'guess)))
;; from http://www.djcbsoftware.nl/code/mu/mu4e/Attaching-files-with-dired.html
(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))))
(defun mu4e/init-mu4e-alert ()
(use-package mu4e-alert
:defer t
:init (with-eval-after-load 'mu4e
(when mu4e-enable-notifications
(mu4e-alert-enable-notifications))
(when mu4e-enable-mode-line
(mu4e-alert-enable-mode-line-display)))))
(defun mu4e/init-helm-mu ()
(use-package helm-mu
:defer t
:init (dolist (m '(mu4e-main-mode-hook
mu4e-headers-mode-hook
mu4e-view-mode-hook
mu4e-compose-mode-hook))
(spacemacs/set-leader-keys-for-major-mode m
"S" 'helm-mu
"/" 'helm-mu
"C" 'helm-mu-contacts))))
(defun mu4e/init-mu4e-maildirs-extension ()
"If mu4e-use-maildirs-extension is non-nil, set
mu4e-use-maildirs-extension-load to be evaluated after mu4e has been loaded."
(use-package mu4e-maildirs-extension
:if mu4e-use-maildirs-extension
:init (with-eval-after-load 'mu4e (mu4e-maildirs-extension-load))))
(defun mu4e/pre-init-org ()
;; load org-mu4e when org is actually loaded
(with-eval-after-load 'org (require 'org-mu4e nil 'noerror)))