This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+email/mu4e/packages.el
syl20bnr ebe4c60264 Revert "Defer packages by default using use-package-always-defer"
This reverts commit 29c78ce841 and all other fixes
that have been made afterwards.

The motivation is that use-package is seen by many as a replacement for
`require`. Is use-package always defer the loading of packages then is breaks
this use case, this does not respect POLA so even if it was making Spacemacs
loading faster (up to 3s faster on some startup on my machine) we just cannot
use it, it would be irresponsible. Spacemacs should be easy to use, loading
performance will come with time but it is not a priority.
2018-03-03 23:40:10 -05:00

147 lines
5 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-modes)
(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)))