* mu4e.el: be more helpful for the user when setting up mu4e
This commit is contained in:
@ -34,8 +34,6 @@
|
||||
(require 'mu4e-send)
|
||||
(require 'mu4e-proc)
|
||||
|
||||
(require 'mu4e-version) ;; auto-generated
|
||||
|
||||
;; mu4e-version.el is autogenerated, and defines mu4e-mu-version
|
||||
(require 'mu4e-version)
|
||||
|
||||
@ -51,15 +49,15 @@
|
||||
:group 'mu4e
|
||||
:safe 'stringp)
|
||||
|
||||
(defcustom mu4e-mu-binary "mu"
|
||||
(defcustom mu4e-mu-binary (executable-find "mu")
|
||||
"Name of the mu-binary to use; if it cannot be found in your
|
||||
PATH, you can specify the full path."
|
||||
:type 'file
|
||||
:group 'mu4e
|
||||
:safe 'stringp)
|
||||
|
||||
(defcustom mu4e-maildir nil
|
||||
"Your Maildir directory. When `nil', mu will try to find it."
|
||||
(defcustom mu4e-maildir (expand-file-name "~/Maildir")
|
||||
"Your Maildir directory; by default, mu4e assumes ~/Maildir."
|
||||
:type 'directory
|
||||
:safe 'stringp
|
||||
:group 'mu4e)
|
||||
@ -114,27 +112,21 @@ show up in the UI), and KEY is a shortcut key for the query.")
|
||||
"Special folders for mm."
|
||||
:group 'mu4e)
|
||||
|
||||
;; (defcustom mu4e-inbox-folder nil
|
||||
;; "Your Inbox folder, relative to `mu4e-maildir', e.g. \"/Inbox\"."
|
||||
;; :type 'string
|
||||
;; :safe 'stringp
|
||||
;; :group 'mu4e-folders)
|
||||
|
||||
(defcustom mu4e-sent-folder nil
|
||||
(defcustom mu4e-sent-folder "/sent"
|
||||
"Your folder for sent messages, relative to `mu4e-maildir',
|
||||
e.g. \"/Sent Items\"."
|
||||
:type 'string
|
||||
:safe 'stringp
|
||||
:group 'mu4e-folders)
|
||||
|
||||
(defcustom mu4e-draft-folder nil
|
||||
(defcustom mu4e-drafts-folder "/drafts"
|
||||
"Your folder for draft messages, relative to `mu4e-maildir',
|
||||
e.g. \"/drafts\""
|
||||
:type 'string
|
||||
:safe 'stringp
|
||||
:group 'mu4e-folders)
|
||||
|
||||
(defcustom mu4e-trash-folder nil
|
||||
(defcustom mu4e-trash-folder "/trash"
|
||||
"Your folder for trashed messages, relative to `mu4e-maildir',
|
||||
e.g. \"/trash\"."
|
||||
:type 'string
|
||||
@ -340,6 +332,35 @@ in which case it will be equal to `:to'.)")
|
||||
|
||||
|
||||
;; mm startup function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(defun mu4e-create-maildir-maybe (dir)
|
||||
"Offer to create DIR if it does not exist yet. Return t if the
|
||||
dir already existed, or has been created, nil otherwise."
|
||||
(if (and (file-exists-p dir) (not (file-directory-p dir)))
|
||||
(error "%s exists, but is not a directory." dir))
|
||||
(cond
|
||||
((file-directory-p dir) t)
|
||||
((yes-or-no-p (format "%s does not exist yes. Create now?" dir))
|
||||
(mu4e-proc-mkdir dir))
|
||||
(otherwise nil)))
|
||||
|
||||
(defun mu4e-check-requirements ()
|
||||
"Check for the settings required for running mu4e."
|
||||
(unless mu4e-maildir
|
||||
(error "Please set `mu4e-maildir' to the full path to your
|
||||
Maildir directory."))
|
||||
(unless (mu4e-create-maildir-maybe mu4e-maildir)
|
||||
(error "%s is not a valid maildir directory" mu4e-maildir))
|
||||
(dolist (var '( mu4e-sent-folder
|
||||
mu4e-drafts-folder
|
||||
mu4e-trash-folder))
|
||||
(unless (and (boundp var) (symbol-value var))
|
||||
(error "Please set %S" var))
|
||||
(let* ((dir (symbol-value var)) (path (concat mu4e-maildir dir)))
|
||||
(unless (string= (substring dir 0 1) "/")
|
||||
(error "%S must start with a '/'"))
|
||||
(unless (mu4e-create-maildir-maybe path)
|
||||
(error "%s (%S) does not exist" path var)))))
|
||||
|
||||
(defun mu4e ()
|
||||
"Start mm. We do this by sending a 'ping' to the mu server
|
||||
process, and start the main view if the 'pong' we receive from the
|
||||
@ -347,11 +368,7 @@ server has the expected values."
|
||||
(interactive)
|
||||
(if (buffer-live-p (get-buffer mu4e-main-buffer-name))
|
||||
(switch-to-buffer mu4e-main-buffer-name)
|
||||
(dolist (var '(mu4e-maildir mu4e-inbox-folder mu4e-outbox-folder
|
||||
mu4e-outbox-folder mu4e-sent-folder mu4e-drafts-folder
|
||||
mu4e-trash-folder))
|
||||
(unless (and (boundp var) (symbol-value var))
|
||||
(error "Please set %S" var)))
|
||||
(mu4e-check-requirements)
|
||||
;; explicit version checks are a bit questionable,
|
||||
;; better to check for specific features
|
||||
(if (< emacs-major-version 23)
|
||||
|
||||
Reference in New Issue
Block a user