]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-maildir-fcc.el
lib: Re-implement moving of thread authors.
[notmuch] / emacs / notmuch-maildir-fcc.el
index 91c174c7a0afcf9ae644e3180a642f6e9bf7d5d2..8af6f009e4289afa767b4ba05ab6f709ccca5eb4 100644 (file)
    (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."
@@ -111,8 +132,8 @@ if successful, nil if not."
           (write-file (concat destdir "/tmp/" msg-id))
           msg-id)
          (t
-          (message (format "Can't write to %s. Not a maildir."
-                    destdir))
+          (error (format "Can't write to %s. Not a maildir."
+                         destdir))
           nil))))
 
 (defun notmuch-maildir-fcc-move-tmp-to-new (destdir msg-id)