From 8cb4a12fda212421fc0e4c2c573dce1ca59acc49 Mon Sep 17 00:00:00 2001 From: Tomi Ollila Date: Tue, 19 Feb 2013 09:24:51 +0200 Subject: [PATCH] Re: [PATCH] emacs: functions to import sender or recipient into BBDB --- ec/f37b6f5cc174eeca1d7088fb6b0fa960897072 | 153 ++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 ec/f37b6f5cc174eeca1d7088fb6b0fa960897072 diff --git a/ec/f37b6f5cc174eeca1d7088fb6b0fa960897072 b/ec/f37b6f5cc174eeca1d7088fb6b0fa960897072 new file mode 100644 index 000000000..c56fabfa3 --- /dev/null +++ b/ec/f37b6f5cc174eeca1d7088fb6b0fa960897072 @@ -0,0 +1,153 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id B59A9431FB6 + for ; Mon, 18 Feb 2013 23:25:06 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: 0 +X-Spam-Level: +X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] + autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id EUiS5Bevw9ZW for ; + Mon, 18 Feb 2013 23:25:04 -0800 (PST) +Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34]) + by olra.theworths.org (Postfix) with ESMTP id 4EFC1431FAF + for ; Mon, 18 Feb 2013 23:25:04 -0800 (PST) +Received: from guru.guru-group.fi (localhost [IPv6:::1]) + by guru.guru-group.fi (Postfix) with ESMTP id 6CE7310014F; + Tue, 19 Feb 2013 09:24:51 +0200 (EET) +From: Tomi Ollila +To: Daniel Bergey , + Notmuch Mail List , + Ethan Glasser-Camp +Subject: Re: [PATCH] emacs: functions to import sender or recipient into BBDB +In-Reply-To: <87ip64gdpg.fsf@chladni.lan> +References: <87lii62sk2.fsf@wonderlust.lan> <87ipa66pne.fsf@betacantrips.com> + <87ip92zc6m.fsf@wonderlust.lan> <87ip64gdpg.fsf@chladni.lan> +User-Agent: Notmuch/0.15+20~g7e29ae9 (http://notmuchmail.org) Emacs/24.2.1 + (x86_64-unknown-linux-gnu) +X-Face: HhBM'cA~ +MIME-Version: 1.0 +Content-Type: text/plain +Cc: Chris Thachuk +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Tue, 19 Feb 2013 07:25:06 -0000 + +On Thu, Feb 07 2013, Daniel Bergey wrote: + +>>From a show buffer, notmuch-bbdb/snarf-from imports the sender into +> bbdb. notmuch-bbdb/snarf-to imports all recipients. Newly imported +> concacts are reported in the minibuffer / Messages buffer. +> +> Both functions use the BBDB parser to recognize email address formats. +> --- +> Following discussion upthread, I put everything in notmuch-address. I +> renamed the functions to put notmuch before bbdb. And I replaced the +> horrid comma-splitting from my first version with the functions BBDB +> provides for parsing email headers. +> +> It looks as though Reply-To is not exposed in the :headers plist. I +> assume the Resent-* headers are not, either. Therefore none of these +> are imported (nil entries in notmuch-bbdb/header-by-name). They would be +> easy to add if the plist is expanded. +> +> Thanks, and sorry it's taken me so long to get back to this patch. + +>From my understanding the code looks pretty good; I have only some +whitespace consistency things that jist briefly passes the threshold +to mention -- comments inline. + +But before doing a potential cleanup patch the users of notmuch-bbdb +please test and comment + +> emacs/notmuch-address.el | 43 +++++++++++++++++++++++++++++++++++++++++++ +> 1 file changed, 43 insertions(+) +> +> diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el +> index 2bf762b..8d5f727 100644 +> --- a/emacs/notmuch-address.el +> +++ b/emacs/notmuch-address.el +> @@ -98,4 +98,47 @@ line." +> +> ;; + +This ';;' used to be 3rd last line in notmuch-address.el. +Running 'tail -n 5 emacs/*.el' reveals that it is (somewhat) consistent +to use it as "separator" between code above and (provide 'notmuch-...) +that follows. + +> +;; functions to add sender / recipients to BBDB +> + +> +(defun notmuch-bbdb/snarf-headers (headers) +> + ;; Helper function to avoid code duplication in the two below +> + ;; headers should have the same format as bbdb-get-addresses-headers +> + +> + ;; bbdb-get-addresses reads these +> + ;; Ugh, pass-by-global +> + (let ((addrs (bbdb-get-addresses nil nil 'notmuch-bbdb/get-header-content)) +> + (bbdb-get-addresses-headers headers) ; headers to read +> + (bbdb-gag-messages t) ; suppress m/n processed message +> + ) +> + (bbdb-update-records addrs t t))) +> + +> +(defun notmuch-bbdb/snarf-from () +> + "Import the sender of the current message into BBDB" +> + (interactive) +> + (notmuch-bbdb/snarf-headers +> + (list (assoc 'authors bbdb-get-addresses-headers)))) + +Two spaces above. + +> + +> +(defun notmuch-bbdb/snarf-to () +> + "Import all recipients of the current message into BBDB" +> + (interactive) +> + (notmuch-bbdb/snarf-headers +> + (list (assoc 'recipients bbdb-get-addresses-headers)))) + +Ditto. + +> + +> +(defvar notmuch-bbdb/header-by-name +> + ;; both are case sensitive +> + '( ("From" . :From) +> + ("To" . :To) +> + ("CC" . :Cc) +> + ("BCC" . :Bcc) +> + ("Resent-From" . nil) +> + ("Reply-To" . nil) +> + ("Resent-To" . nil) +> + ("Resent-CC" . nil)) +> + "Alist for dispatching header symbols as used by notmuch-show-get-header +> +from strings as used by bbdb-get-addresses") +> + +> +(defun notmuch-bbdb/get-header-content (name) +> + (notmuch-show-get-header (cdr (assoc name notmuch-bbdb/header-by-name)))) +> + +> + + +2 empty lines --- somewhat consistent with notmuch-lib.el ... but +not with anything else ;D + +> (provide 'notmuch-address) +> -- +> 1.7.10.4 -- 2.26.2