(defun notmuch-fcc-initialization ()
"If notmuch-fcc-directories is set,
hook them into the message-fcc-handler-function"
-(if (not (eq notmuch-fcc-dirs nil)) (progn
;Set up the message-fcc-handler to move mails to the maildir in Fcc
;The parameter is hardcoded to mark messages as "seen"
(setq message-fcc-handler-function
;(preferrably we would use message-header-setup-up, but notmuch-reply
; munges headers after that is run, so it won't work for replies within
; notmuch)
- (add-hook 'message-send-hook 'notmuch-fcc-header-setup))))
+ (add-hook 'message-send-hook 'notmuch-fcc-header-setup))
(defun notmuch-fcc-header-setup ()
"Can be added to message-send-hook and will set the FCC header
(let ((subdir
(cdr (assoc-string (message-fetch-field "from") notmuch-fcc-dirs t))))
(if (eq subdir nil) (setq subdir (car (car notmuch-fcc-dirs))))
- (message-remove-header "Fcc")
- (message-add-header (concat "Fcc: " message-directory subdir)))))
+ (unless (message-fetch-field "fcc")
+ (message-add-header (concat "Fcc: "
+ (file-name-as-directory message-directory)
+ subdir)))
+ (let ((fcc-header (message-fetch-field "fcc")))
+ (unless (notmuch-maildir-fcc-dir-is-maildir-p fcc-header)
+ (cond ((not (file-writable-p fcc-header))
+ (error (format "%s is not a maildir, but you don't have permission to create one." fcc-header)))
+ ((y-or-n-p (format "%s is not a maildir. Create it? "
+ fcc-header))
+ (notmuch-maildir-fcc-create-maildir fcc-header))
+ (t
+ (error "Not sending message."))))))))
(defun notmuch-maildir-fcc-host-fixer (hostname)
(replace-regexp-in-string "/\\|:"
(file-exists-p (concat dir "/new/"))
(file-exists-p (concat dir "/tmp/"))))
+(defun notmuch-maildir-fcc-create-maildir (path)
+ (cond ((or (not (file-exists-p path)) (file-directory-p path))
+ (make-directory (concat path "/cur/") t)
+ (make-directory (concat path "/new/") t)
+ (make-directory (concat path "/tmp/") t))
+ ((file-regular-p path)
+ (error "%s is a file. Can't creat maildir." path))
+ (t
+ (error "I don't know how to create a maildir here"))))
+
(defun notmuch-maildir-fcc-save-buffer-to-tmp (destdir)
"Returns the msg id of the message written to the temp directory
if successful, nil if not."