;;; Code:
-(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl-lib))
+
(require 'message)
(require 'notmuch-lib)
(defvar notmuch-maildir-fcc-count 0)
(defcustom notmuch-fcc-dirs "sent"
- "Determines the maildir directory in which to save outgoing mail.
+ "Determines the Fcc Header which says where to save outgoing mail.
Three types of values are permitted:
- nil: no Fcc header is added,
-- a string: the value of `notmuch-fcc-dirs' is the name of the
- folder to use,
+- a string: the value of `notmuch-fcc-dirs' is the Fcc header to
+ be used.
- a list: the folder is chosen based on the From address of the
current message using a list of regular expressions and
If none of the regular expressions match the From address, no
Fcc header will be added.
-In all cases, a relative FCC directory will be understood to
-specify a directory within the notmuch mail store, (as set by
-the database.path option in the notmuch configuration file).
+If `notmuch-maildir-use-notmuch-insert' is set (the default) then
+the header should be of the form \"folder +tag1 -tag2\" where
+folder is the folder (relative to the notmuch mailstore) to store
+the message in, and tag1 and tag2 are tag changes to apply to the
+stored message. This string is split using `split-string-and-unquote',
+so a folder name containing spaces can be specified by
+quoting each space with an immediately preceding backslash
+or surrounding the entire folder name in double quotes.
-You will be prompted to create the directory if it does not exist
-yet when sending a mail."
+If `notmuch-maildir-use-notmuch-insert' is nil then the Fcc
+header should be the directory where the message should be
+saved. A relative directory will be understood to specify a
+directory within the notmuch mail store, (as set by the
+database.path option in the notmuch configuration file).
+
+In all cases you will be prompted to create the folder or
+directory if it does not exist yet when sending a mail."
:type '(choice
(const :tag "No FCC header" nil)
(message-encode-message-body)
(save-restriction
(message-narrow-to-headers)
- (let ((mail-parse-charset message-default-charset))
- (mail-encode-encoded-word-buffer)))
+ (mail-encode-encoded-word-buffer))
(goto-char (point-min))
(when (re-search-forward
(concat "^" (regexp-quote mail-header-separator) "$")
If `notmuch-maildir-use-notmuch-insert` is set then store the
message using notmuch insert. Otherwise store the message using
normal fcc."
+ (message "Doing Fcc...")
(if notmuch-maildir-use-notmuch-insert
(notmuch-maildir-fcc-with-notmuch-insert fcc-header)
(notmuch-maildir-fcc-file-fcc fcc-header)))
The fcc-header should be of the form \"folder +tag1 -tag2\" where
folder is the folder (relative to the notmuch mailstore) to store
the message in, and tag1 and tag2 are tag changes to apply to the
-stored message. If CREATE is non-nil then create the folder if
-necessary."
+stored message. This string is split using `split-string-and-unquote',
+so a folder name containing spaces can be specified by
+quoting each space with an immediately preceding backslash
+or surrounding the entire folder name in double quotes.
+
+If CREATE is non-nil then create the folder if necessary."
(let* ((args (split-string-and-unquote fcc-header))
(folder (car args))
(tags (cdr args)))
;; typo, or just the user want a new folder, let the user decide
;; how to deal with it.
(error
- (let ((response (read-char-choice
- "Insert failed: (r)etry, (c)reate folder, (i)gnore, or (e)dit the header? "
+ (let ((response (notmuch-read-char-choice
+ "Insert failed: (r)etry, (c)reate folder, (i)gnore, or (e)dit the header? "
'(?r ?c ?i ?e))))
- (case response
- (?r (notmuch-maildir-fcc-with-notmuch-insert fcc-header))
- (?c (notmuch-maildir-fcc-with-notmuch-insert fcc-header 't))
- (?i 't)
- (?e (notmuch-maildir-fcc-with-notmuch-insert
- (read-from-minibuffer "Fcc header: " fcc-header)))))))))
+ (cl-case response
+ (?r (notmuch-maildir-fcc-with-notmuch-insert fcc-header))
+ (?c (notmuch-maildir-fcc-with-notmuch-insert fcc-header 't))
+ (?i 't)
+ (?e (notmuch-maildir-fcc-with-notmuch-insert
+ (read-from-minibuffer "Fcc header: " fcc-header)))))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun notmuch-maildir-fcc-make-uniq-maildir-id ()
(let* ((ftime (float-time))
(microseconds (mod (* 1000000 ftime) 1000000))
- (hostname (notmuch-maildir-fcc-host-fixer system-name)))
+ (hostname (notmuch-maildir-fcc-host-fixer (system-name))))
(setq notmuch-maildir-fcc-count (+ notmuch-maildir-fcc-count 1))
(format "%d.%d_%d_%d.%s"
ftime
;; fix it in some way.
(let* ((prompt (format "Fcc %s is not a maildir: (r)etry, (c)reate folder, (i)gnore, or (e)dit the header? "
fcc-header))
- (response (read-char-choice prompt '(?r ?c ?i ?e))))
- (case response
- (?r (notmuch-maildir-fcc-file-fcc fcc-header))
- (?c (if (file-writable-p fcc-header)
- (notmuch-maildir-fcc-create-maildir fcc-header)
- (message "No permission to create %s." fcc-header)
- (sit-for 2))
- (notmuch-maildir-fcc-file-fcc fcc-header))
- (?i 't)
- (?e (notmuch-maildir-fcc-file-fcc
- (read-from-minibuffer "Fcc header: " fcc-header)))))))
+ (response (notmuch-read-char-choice prompt '(?r ?c ?i ?e))))
+ (cl-case response
+ (?r (notmuch-maildir-fcc-file-fcc fcc-header))
+ (?c (if (file-writable-p fcc-header)
+ (notmuch-maildir-fcc-create-maildir fcc-header)
+ (message "No permission to create %s." fcc-header)
+ (sit-for 2))
+ (notmuch-maildir-fcc-file-fcc fcc-header))
+ (?i 't)
+ (?e (notmuch-maildir-fcc-file-fcc
+ (read-from-minibuffer "Fcc header: " fcc-header)))))))
(defun notmuch-maildir-fcc-write-buffer-to-maildir (destdir &optional mark-seen)
"Writes the current buffer to maildir destdir. If mark-seen is