[spacemacs] add my mu4e contrib layer
authorAmin Bandali <me@aminb.org>
Sun, 22 Feb 2015 04:21:43 +0000 (23:21 -0500)
committerAmin Bandali <me@aminb.org>
Sun, 22 Feb 2015 04:21:43 +0000 (23:21 -0500)
spacemacs/.emacs.d/private/mu4e/extensions.el [new file with mode: 0644]
spacemacs/.emacs.d/private/mu4e/packages.el [new file with mode: 0644]

diff --git a/spacemacs/.emacs.d/private/mu4e/extensions.el b/spacemacs/.emacs.d/private/mu4e/extensions.el
new file mode 100644 (file)
index 0000000..a6adea8
--- /dev/null
@@ -0,0 +1,33 @@
+;;; extensions.el --- mu4e Layer extensions File for Spacemacs
+;;
+;; Copyright (c) 2012-2014 Sylvain Benner
+;; Copyright (c) 2014-2015 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
+
+(defvar mu4e-pre-extensions
+  '(
+    ;; pre extension mu4es go here
+    )
+  "List of all extensions to load before the packages.")
+
+(defvar mu4e-post-extensions
+  '(
+    ;; post extension mu4es go here
+    )
+  "List of all extensions to load after the packages.")
+
+;; For each extension, define a function mu4e/init-<extension-mu4e>
+;;
+;; (defun mu4e/init-my-extension ()
+;;   "Initialize my extension"
+;;   )
+;;
+;; Often the body of an initialize function uses `use-package'
+;; For more info on `use-package', see readme:
+;; https://github.com/jwiegley/use-package
diff --git a/spacemacs/.emacs.d/private/mu4e/packages.el b/spacemacs/.emacs.d/private/mu4e/packages.el
new file mode 100644 (file)
index 0000000..8d9f5fd
--- /dev/null
@@ -0,0 +1,139 @@
+;;; packages.el --- mu4e Layer packages File for Spacemacs
+;;
+;; Copyright (c) 2012-2014 Sylvain Benner
+;; Copyright (c) 2014-2015 Sylvain Benner & Contributors
+;; Copyright (c) 2015 Amin Bandali
+;;
+;; Authors: Amin Bandali <me@aminb.org>
+;;          Sylvain Benner <sylvain.benner@gmail.com>
+;; URL: https://github.com/aminb/dotfiles
+;;
+;; This file is not part of GNU Emacs; nor that of spacemacs.
+;;
+;;; License: GPLv3
+
+(defvar mu4e-packages
+  '(
+    ;; mu4e is not in any repos, so it's commented
+    ;; mu4e
+    smtpmail
+    )
+  "List of all packages to install and/or initialize. Built-in packages
+which require an initialization must be listed explicitly in the list.")
+
+(defvar mu4e-excluded-packages '()
+  "List of packages to exclude.")
+
+(defun get-string-from-file (filePath)
+  "Return filePath's file content."
+  (with-temp-buffer
+    (insert-file-contents filePath)
+    (buffer-string)))
+;; thanks to “Pascal J Bourguignon” and “TheFlyingDutchman
+;;   〔zzbba…@aol.com〕”. 2010-09-02
+
+(defun get-passwd-file (name)
+  "Return name's passwd file content"
+  (get-string-from-file (concat "/home/amin/.passwd/" name)))
+
+(require 'mu4e)
+(require 'smtpmail)
+(setq
+    mu4e-get-mail-command "offlineimap"   ;; or fetchmail, or ...
+    mu4e-update-interval 300              ;; update every 5 minutes
+    mu4e-sent-folder "/aminb/Sent"
+    mu4e-drafts-folder "/aminb/Drafts"
+    mu4e-trash-folder "/aminb/Trash"
+    user-mail-address (get-passwd-file "aminb-mail")
+    smtpmail-default-smtp-server "mail.aminb.org"
+    smtpmail-local-domain "aminb.org"
+    smtpmail-smtp-server "mail.aminb.org"
+    smtpmail-stream-type 'ssl
+    smtpmail-smtp-service 465)
+
+(defvar my-mu4e-account-alist
+  '(("aminb"
+     (mu4e-sent-folder "/aminb/Sent")
+     (mu4e-drafts-folder "/aminb/Drafts")
+     (mu4e-trash-folder  "/aminb/Trash")
+     (user-mail-address (get-passwd-file "aminb-mail"))
+     (user-full-name "Amin Bandali")
+     (smtpmail-default-smtp-server "mail.aminb.org")
+     (smtpmail-local-domain "aminb.org")
+     (smtpmail-smtp-user (get-passwd-file "aminb-user"))
+     (smtpmail-smtp-server "mail.aminb.org")
+     (smtpmail-stream-type ssl)
+     (smtpmail-smtp-service 465))
+    ("Gmail"
+     (mu4e-sent-folder   "/Gmail/[Gmail].Sent Mail")
+     (mu4e-drafts-folder "/Gmail/[Gmail].Drafts")
+     (mu4e-trash-folder  "/Gmail/[Gmail].Trash")
+     (user-mail-address (get-passwd-file "gmail-mail"))
+     (user-full-name "Amin Bandali")
+     (smtpmail-default-smtp-server "smtp.gmail.com")
+     (smtpmail-local-domain "gmail.com")
+     (smtpmail-smtp-user (get-passwd-file "gmail-mail"))
+     (smtpmail-smtp-server "smtp.gmail.com")
+     (smtpmail-stream-type ssl)
+     (smtpmail-smtp-service 465))))
+
+(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)
+
+
+;; Shortcut for mu4e.
+(global-set-key (kbd "C-c m") 'mu4e)
+(evil-leader/set-key "am" 'mu4e)
+
+
+;; A special version of the gnus-dired-mail-buffers function
+;; that understands mu4e buffers as well
+(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)
+
+(require 'mu4e-contrib)
+(setq mu4e-html2text-command 'mu4e-shr2text
+      mu4e-view-html-plaintext-ratio-heuristic 10
+      mu4e-view-prefer-html t)
+
+;; For each package, define a function mu4e/init-<package-mu4e>
+;;
+;; (defun mu4e/init-my-package ()
+;;   "Initialize my package"
+;;   )
+;;
+;; Often the body of an initialize function uses `use-package'
+;; For more info on `use-package', see readme:
+;; https://github.com/jwiegley/use-package