From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodney Lorrimar Subject: [PATCH] org-contacts: Fix org-contacts-gnus-article-from-goto Date: Sat, 04 May 2013 22:09:47 +0800 Message-ID: <877gjezvis.fsf@rodney.id.au> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:42152) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UYd9m-0006dS-F9 for emacs-orgmode@gnu.org; Sat, 04 May 2013 10:09:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UYd9k-0004qZ-1E for emacs-orgmode@gnu.org; Sat, 04 May 2013 10:09:46 -0400 Received: from rodney.id.au ([178.79.159.183]:40984) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UYd9j-0004qV-Ou for emacs-orgmode@gnu.org; Sat, 04 May 2013 10:09:43 -0400 Received: from 14-203-168-144.static.tpgi.com.au ([14.203.168.144] helo=glamdring) by rodney.id.au with esmtpsa (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1UYd9a-0005cr-Ae for emacs-orgmode@gnu.org; Sat, 04 May 2013 14:09:35 +0000 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org * contrib/lisp/org-contacts.el (org-contacts-filter): Add a PROP-MATCH argument. (org-contacts-gnus-article-from-get-marker): Search for email as a property not a tag. `org-contacts-gnus-article-from-get-marker' seems to assume that the contact properties exist within the contact's tags as colon-separated KEY={VALUE} entries. This isn't the case for me, using org-mode from git master. This commit adds a PROP-MATCH argument to `org-contacts-filter' so that `org-contacts-gnus-article-from-get-marker` can filter by the EMAIL property. --- contrib/lisp/org-contacts.el | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/contrib/lisp/org-contacts.el b/contrib/lisp/org-contacts.el index c72e6c0..c84f1f2 100644 --- a/contrib/lisp/org-contacts.el +++ b/contrib/lisp/org-contacts.el @@ -233,10 +233,15 @@ A regexp matching strings of whitespace, `,' and `;'.") (progress-reporter-done progress-reporter))) org-contacts-db)) -(defun org-contacts-filter (&optional name-match tags-match) - "Search for a contact matching NAME-MATCH and TAGS-MATCH. -If both match values are nil, return all contacts." +(defun org-contacts-filter (&optional name-match tags-match prop-match) + "Search for a contact matching any of NAME-MATCH, TAGS-MATCH, PROP-MATCH. +If all match values are nil, return all contacts. + +The optional PROP-MATCH argument is a single (PROP . VALUE) cons +cell corresponding to the contact properties. +" (if (and (null name-match) + (null prop-match) (null tags-match)) (org-contacts-db) (loop for contact in (org-contacts-db) @@ -244,6 +249,11 @@ If both match values are nil, return all contacts." (and name-match (org-string-match-p name-match (first contact))) + (and prop-match + (org-find-if (lambda (prop) + (and (string= (car prop-match) (car prop)) + (org-string-match-p (cdr prop-match) (cdr prop)))) + (caddr contact))) (and tags-match (org-find-if (lambda (tag) (org-string-match-p tags-match tag)) @@ -523,7 +533,8 @@ A group FOO is composed of contacts with the tag FOO." (email (cadr address))) (cadar (or (org-contacts-filter nil - (concat org-contacts-email-property "={\\b" (regexp-quote email) "\\b}")) + nil + (cons org-contacts-email-property (concat "\\b" (regexp-quote email) "\\b"))) (when name (org-contacts-filter (concat "^" name "$"))))))) -- 1.7.10.4