From: Daniel Bergey Date: Thu, 7 Feb 2013 18:51:07 +0000 (+1900) Subject: Re: [PATCH] emacs: functions to import sender or recipient into BBDB X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=35e6313fa731752335c6081c1c20368f1d1a1940;p=notmuch-archives.git Re: [PATCH] emacs: functions to import sender or recipient into BBDB --- diff --git a/5d/9ce433a929eaead1d2d00634f64ad45d81843f b/5d/9ce433a929eaead1d2d00634f64ad45d81843f new file mode 100644 index 000000000..74441f269 --- /dev/null +++ b/5d/9ce433a929eaead1d2d00634f64ad45d81843f @@ -0,0 +1,143 @@ +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 A5F56414BA9 + for ; Thu, 7 Feb 2013 10:51:08 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: -0.7 +X-Spam-Level: +X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 + tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7] + 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 xxMOZUDuhkob for ; + Thu, 7 Feb 2013 10:51:04 -0800 (PST) +Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com + [66.111.4.29]) + (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by olra.theworths.org (Postfix) with ESMTPS id 8A3D0416456 + for ; Thu, 7 Feb 2013 10:51:04 -0800 (PST) +Received: from compute1.internal (compute1.nyi.mail.srv.osa [10.202.2.41]) + by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 520F220B2E; + Thu, 7 Feb 2013 13:51:02 -0500 (EST) +Received: from frontend2.nyi.mail.srv.osa ([10.202.2.161]) + by compute1.internal (MEProxy); Thu, 07 Feb 2013 13:51:02 -0500 +DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= + messagingengine.com; h=from:to:cc:subject:in-reply-to:references + :date:message-id:mime-version:content-type; s=smtpout; bh=EkGqWn + yZXJIr5/hdX46yeRz4Jyk=; b=PszpgNbhDlXhUgm/PWO9JVFp1Wi9Yy0jECLQ5N + SuJwoyL6UGgc2l1wxX33H8kgjDNvYZwVQgM59sFOx7IAkL8eFlAytRy12/nVf+Vl + lWQLS3J+Z5V0iX0R852E6j0sFXFeWn1uzVfuE9u4vW2/cb7rdMBHwaBGTk7ewPPD + Gf7Xc= +X-Sasl-enc: 5QLE9Cq8hPMhBKKjvWMixHDczAheWytLPMAVHLdKsRM/ 1360263062 +Received: from localhost (unknown [66.80.90.109]) + by mail.messagingengine.com (Postfix) with ESMTPA id F2AED4827DE; + Thu, 7 Feb 2013 13:51:01 -0500 (EST) +From: Daniel Bergey +To: Notmuch Mail List , + Ethan Glasser-Camp +Subject: Re: [PATCH] emacs: functions to import sender or recipient into BBDB +In-Reply-To: <87ip92zc6m.fsf@wonderlust.lan> +References: <87lii62sk2.fsf@wonderlust.lan> <87ipa66pne.fsf@betacantrips.com> + <87ip92zc6m.fsf@wonderlust.lan> +User-Agent: Notmuch/0.13.2 (http://notmuchmail.org) Emacs/24.2.1 + (x86_64-pc-linux-gnu) +Date: Thu, 07 Feb 2013 13:51:07 -0500 +Message-ID: <87ip64gdpg.fsf@chladni.lan> +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: Thu, 07 Feb 2013 18:51:08 -0000 + +>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. + + 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." + + ;; + ++;; 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)))) ++ ++(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)))) ++ ++(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)))) ++ ++ + (provide 'notmuch-address) +-- +1.7.10.4 +