[PATCH 3/6] emacs: maildir import message-do-fcc
authorMark Walters <markwalters1009@gmail.com>
Fri, 10 Jun 2016 23:02:49 +0000 (00:02 +0100)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 23:22:03 +0000 (16:22 -0700)
ba/7560db1c8ca91251f7de37cdd1b5313735dd23 [new file with mode: 0644]

diff --git a/ba/7560db1c8ca91251f7de37cdd1b5313735dd23 b/ba/7560db1c8ca91251f7de37cdd1b5313735dd23
new file mode 100644 (file)
index 0000000..5db7e96
--- /dev/null
@@ -0,0 +1,189 @@
+Return-Path: <markwalters1009@gmail.com>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by arlo.cworth.org (Postfix) with ESMTP id 92C576DE0362\r
+ for <notmuch@notmuchmail.org>; Fri, 10 Jun 2016 16:03:20 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at cworth.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.336\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.336 tagged_above=-999 required=5 tests=[AWL=0.234,\r
+  DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\r
+ FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7,\r
+ RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001]\r
+ autolearn=disabled\r
+Received: from arlo.cworth.org ([127.0.0.1])\r
+ by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id DfwZuyHUjZzk for <notmuch@notmuchmail.org>;\r
+ Fri, 10 Jun 2016 16:03:12 -0700 (PDT)\r
+Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com\r
+ [74.125.82.68]) by arlo.cworth.org (Postfix) with ESMTPS id 04C456DE028C for\r
+ <notmuch@notmuchmail.org>; Fri, 10 Jun 2016 16:03:07 -0700 (PDT)\r
+Received: by mail-wm0-f68.google.com with SMTP id n184so1713931wmn.1\r
+ for <notmuch@notmuchmail.org>; Fri, 10 Jun 2016 16:03:06 -0700 (PDT)\r
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;\r
+ h=from:to:cc:subject:date:message-id:in-reply-to:references;\r
+ bh=H13giCxp+nFIGIfShZNMKX/UBWbQdRoglR47WE8VNgs=;\r
+ b=y6eQYfyv96WXxU6VeF7F9GiDKOV4+9b0QF4mrTTcQ0B3vCyv+FCkO+CFrIDKkf+wee\r
+ NrHBr+2ttVjLAZqCnGwaHEgKlL2LEfFI28F1lYNjI0DBRcGA30fCNFZGa2rY5WWh1Zfu\r
+ 8Q5hOVx3FujhIFMhU60BtNQrR3E//bHXvsE0m6I7pXrsI15/08eASzmuVJ8VB4Conzu+\r
+ cIMuYekgU7+dNMr+2FRKXvvFBd6hkHrhIF8YDVEgTc/UNwmksmIaktc66Y1JoHt1xpvE\r
+ K7M2bMLSg3XCJ+DMM/cPrZWyUibl6W+gSx1XHN26lNbp0tEX4hxKmcvV+JT/SLQXXHd3\r
+ 9oZg==\r
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r
+ d=1e100.net; s=20130820;\r
+ h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\r
+ :references;\r
+ bh=H13giCxp+nFIGIfShZNMKX/UBWbQdRoglR47WE8VNgs=;\r
+ b=NQ2EOeRJYq/5yUwDYylxpsS+JsAZDIQmqyzYAVHmlsnXXEtLwgiGr8ZQHkB1VScKVg\r
+ E31v+DsJbCrJrjP2U+y0efpZgiIbxbRiyNO4DagpFlI5j7dfOB14ADnX2bDb7KM4mHZy\r
+ U1lqLb1+ohLutHVqcLeEkFg6Z0YKCXmYSYUJsdypMUnyRNQCFSM6c//skkXNFXVZIWLq\r
+ qmGw4f/7Yek1La+nYMb9bDzZk5Q/3EWT7B/GrlcwL7n3RwxENAXuhtjnNHEKX9ZmzEis\r
+ kzO6N/eG3Rj5ezwrTAA3sS5TD4DlRODN9jQhCShRC+5W0jN93USxatCvkhd1vyYt62B9\r
+ 7U3g==\r
+X-Gm-Message-State:\r
+ ALyK8tJBY1Sw3g4etTRh38vozqKWfgm3aTy6YYXVvCG0HVL8Kf5jXMso0quIuFcfXm4QGA==\r
+X-Received: by 10.28.209.13 with SMTP id i13mr1102929wmg.93.1465599785639;\r
+ Fri, 10 Jun 2016 16:03:05 -0700 (PDT)\r
+Received: from localhost (5751dfa2.skybroadband.com. [87.81.223.162])\r
+ by smtp.gmail.com with ESMTPSA id b207sm1299698wmb.0.2016.06.10.16.03.04\r
+ (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\r
+ Fri, 10 Jun 2016 16:03:05 -0700 (PDT)\r
+From: Mark Walters <markwalters1009@gmail.com>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH 3/6] emacs: maildir import message-do-fcc\r
+Date: Sat, 11 Jun 2016 00:02:49 +0100\r
+Message-Id: <1465599772-10297-4-git-send-email-markwalters1009@gmail.com>\r
+X-Mailer: git-send-email 2.1.4\r
+In-Reply-To: <1465599772-10297-1-git-send-email-markwalters1009@gmail.com>\r
+References: <1465599772-10297-1-git-send-email-markwalters1009@gmail.com>\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.20\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <https://notmuchmail.org/mailman/options/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch/>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <https://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Fri, 10 Jun 2016 23:03:20 -0000\r
+\r
+We will need our own local copy of message-do-fcc so this commit just\r
+copies the code straight from message.el so that it is easier to see\r
+our local changes coming in the next commit.\r
+---\r
+ emacs/notmuch-maildir-fcc.el | 64 ++++++++++++++++++++++++++++++++++++++++++++\r
+ emacs/notmuch-mua.el         |  7 +++--\r
+ 2 files changed, 69 insertions(+), 2 deletions(-)\r
+\r
+diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el\r
+index 835258f..6fed11f 100644\r
+--- a/emacs/notmuch-maildir-fcc.el\r
++++ b/emacs/notmuch-maildir-fcc.el\r
+@@ -120,6 +120,70 @@ by notmuch-mua-mail"\r
+               subdir\r
+             (concat (notmuch-database-path) "/" subdir))))))\r
\r
++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
++;; Functions for saving a message either using notmuch insert or file\r
++;; fcc. First functions common to the two cases.\r
++\r
++(defun notmuch-maildir-message-do-fcc ()\r
++  "Process Fcc headers in the current buffer.\r
++\r
++This is a direct copy from message-mode's message-do-fcc."\r
++  (let ((case-fold-search t)\r
++      (buf (current-buffer))\r
++      list file\r
++      (mml-externalize-attachments message-fcc-externalize-attachments))\r
++    (save-excursion\r
++      (save-restriction\r
++      (message-narrow-to-headers)\r
++      (setq file (message-fetch-field "fcc" t)))\r
++      (when file\r
++      (set-buffer (get-buffer-create " *message temp*"))\r
++      (erase-buffer)\r
++      (insert-buffer-substring buf)\r
++      (message-encode-message-body)\r
++      (save-restriction\r
++        (message-narrow-to-headers)\r
++        (while (setq file (message-fetch-field "fcc" t))\r
++          (push file list)\r
++          (message-remove-header "fcc" nil t))\r
++        (let ((mail-parse-charset message-default-charset)\r
++              (rfc2047-header-encoding-alist\r
++               (cons '("Newsgroups" . default)\r
++                     rfc2047-header-encoding-alist)))\r
++          (mail-encode-encoded-word-buffer)))\r
++      (goto-char (point-min))\r
++      (when (re-search-forward\r
++             (concat "^" (regexp-quote mail-header-separator) "$")\r
++             nil t)\r
++        (replace-match "" t t ))\r
++      ;; Process FCC operations.\r
++      (while list\r
++        (setq file (pop list))\r
++        (if (string-match "^[ \t]*|[ \t]*\\(.*\\)[ \t]*$" file)\r
++            ;; Pipe the article to the program in question.\r
++            (call-process-region (point-min) (point-max) shell-file-name\r
++                                 nil nil nil shell-command-switch\r
++                                 (match-string 1 file))\r
++          ;; Save the article.\r
++          (setq file (expand-file-name file))\r
++          (unless (file-exists-p (file-name-directory file))\r
++            (make-directory (file-name-directory file) t))\r
++          (if (and message-fcc-handler-function\r
++                   (not (eq message-fcc-handler-function 'rmail-output)))\r
++              (funcall message-fcc-handler-function file)\r
++            ;; FIXME this option, rmail-output (also used if\r
++            ;; message-fcc-handler-function is nil) is not\r
++            ;; documented anywhere AFAICS.  It should work in Emacs\r
++            ;; 23; I suspect it does not work in Emacs 22.\r
++            ;; FIXME I don't see the need for the two different cases here.\r
++            ;; mail-use-rfc822 makes no difference (in Emacs 23),and\r
++            ;; the third argument just controls \"Wrote file\" message.\r
++            (if (and (file-readable-p file) (mail-file-babyl-p file))\r
++                (rmail-output file 1 nil t)\r
++              (let ((mail-use-rfc822 t))\r
++                (rmail-output file 1 t t))))))\r
++      (kill-buffer (current-buffer))))))\r
++\r
+ (defun notmuch-fcc-handler (fcc-header)\r
+   "Store message with file fcc."\r
+   (notmuch-maildir-fcc-file-fcc fcc-header))\r
+diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el\r
+index 1ca8056..3c1c046 100644\r
+--- a/emacs/notmuch-mua.el\r
++++ b/emacs/notmuch-mua.el\r
+@@ -33,6 +33,7 @@\r
+ (declare-function notmuch-show-insert-body "notmuch-show" (msg body depth))\r
+ (declare-function notmuch-fcc-header-setup "notmuch-maildir-fcc" ())\r
+ (declare-function notmuch-fcc-handler "notmuch-maildir-fcc" (destdir))\r
++(declare-function notmuch-maildir-message-do-fcc "notmuch-maildir-fcc" ())\r
\r
+ ;;\r
\r
+@@ -491,12 +492,14 @@ will be addressed to all recipients of the source message."\r
+ (defun notmuch-mua-send-and-exit (&optional arg)\r
+   (interactive "P")\r
+   (let ((message-fcc-handler-function #'notmuch-fcc-handler))\r
+-    (message-send-and-exit arg)))\r
++    (letf (((symbol-function 'message-do-fcc) #'notmuch-maildir-message-do-fcc))\r
++        (message-send-and-exit arg))))\r
\r
+ (defun notmuch-mua-send (&optional arg)\r
+   (interactive "P")\r
+   (let ((message-fcc-handler-function #'notmuch-fcc-handler))\r
+-    (message-send arg)))\r
++    (letf (((symbol-function 'message-do-fcc) #'notmuch-maildir-message-do-fcc))\r
++        (message-send arg))))\r
\r
+ (defun notmuch-mua-kill-buffer ()\r
+   (interactive)\r
+-- \r
+2.1.4\r
+\r