X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch-maildir-fcc.el;h=bbf61320d75dc4b9da974a801376f5c35ce1477c;hb=17341ec798b4cb2fe192824bcf8b7e78236e4121;hp=aede753702d01e8d2de62984690d676824cffce2;hpb=a0f09b4942b7fdb852b45856e3439acac2649035;p=notmuch diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el index aede7537..bbf61320 100644 --- a/emacs/notmuch-maildir-fcc.el +++ b/emacs/notmuch-maildir-fcc.el @@ -1,3 +1,5 @@ +;;; notmuch-maildir-fcc.el --- + ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published ;; by the Free Software Foundation; either version 2, or (at your @@ -12,10 +14,14 @@ ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. -;; + +;;; Commentary: + ;; To use this as the fcc handler for message-mode, ;; customize the notmuch-fcc-dirs variable +;;; Code: + (eval-when-compile (require 'cl)) (require 'message) @@ -51,31 +57,27 @@ the database.path option in the notmuch configuration file). You will be prompted to create the directory if it does not exist yet when sending a mail." - :require 'notmuch-fcc-initialization - :group 'notmuch :type '(choice (const :tag "No FCC header" nil) (string :tag "A single folder") (repeat :tag "A folder based on the From header" - (cons regexp (string :tag "Folder"))))) - -(defun notmuch-fcc-initialization () - "If notmuch-fcc-directories is set, - hook them into the message-fcc-handler-function" - ;; Set up the message-fcc-handler to move mails to the maildir in Fcc - ;; The parameter is set to mark messages as "seen" - (setq message-fcc-handler-function - '(lambda (destdir) - (notmuch-maildir-fcc-write-buffer-to-maildir destdir t))) - ;; add a hook to actually insert the Fcc header when sending - (add-hook 'message-header-setup-hook 'notmuch-fcc-header-setup)) + (cons regexp (string :tag "Folder")))) + :require 'notmuch-fcc-initialization + :group 'notmuch-send) + +(defun notmuch-fcc-handler (destdir) + "Write buffer to `destdir', marking it as sent + +Intended to be dynamically bound to `message-fcc-handler-function'" + (notmuch-maildir-fcc-write-buffer-to-maildir destdir t)) (defun notmuch-fcc-header-setup () "Add an Fcc header to the current message buffer. -Can be added to `message-send-hook' and will set the Fcc header -based on the values of `notmuch-fcc-dirs'. An existing Fcc header -will NOT be removed or replaced." +Sets the Fcc header based on the values of `notmuch-fcc-dirs'. + +Originally intended to be use a hook function, but now called directly +by notmuch-mua-mail" (let ((subdir (cond @@ -88,7 +90,7 @@ will NOT be removed or replaced." notmuch-fcc-dirs) ((and (listp notmuch-fcc-dirs) - (= 1 (length (car notmuch-fcc-dirs)))) + (stringp (car notmuch-fcc-dirs))) ;; Old style - no longer works. (error "Invalid `notmuch-fcc-dirs' setting (old style)")) @@ -131,22 +133,21 @@ will NOT be removed or replaced." (defun notmuch-maildir-fcc-host-fixer (hostname) (replace-regexp-in-string "/\\|:" - '(lambda (s) - (cond ((string-equal s "/") "\\057") - ((string-equal s ":") "\\072") - (t s))) + (lambda (s) + (cond ((string-equal s "/") "\\057") + ((string-equal s ":") "\\072") + (t s))) hostname t t)) (defun notmuch-maildir-fcc-make-uniq-maildir-id () - (let* ((ct (current-time)) - (timeid (+ (* (car ct) 65536) (cadr ct))) - (microseconds (car (cdr (cdr ct)))) + (let* ((ftime (float-time)) + (microseconds (mod (* 1000000 ftime) 1000000)) (hostname (notmuch-maildir-fcc-host-fixer system-name))) (setq notmuch-maildir-fcc-count (+ notmuch-maildir-fcc-count 1)) (format "%d.%d_%d_%d.%s" - timeid + ftime (emacs-pid) microseconds notmuch-maildir-fcc-count @@ -163,7 +164,7 @@ will NOT be removed or replaced." (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)) + (error "%s is a file. Can't create maildir." path)) (t (error "I don't know how to create a maildir here")))) @@ -214,6 +215,6 @@ return t if successful, and nil otherwise." (delete-file (concat destdir "/tmp/" msg-id)))) t))) -(notmuch-fcc-initialization) (provide 'notmuch-maildir-fcc) +;;; notmuch-maildir-fcc.el ends here