--- /dev/null
+Return-Path: <jani@nikula.org>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by olra.theworths.org (Postfix) with ESMTP id 978A6431FD2\r
+ for <notmuch@notmuchmail.org>; Tue, 27 Jan 2015 11:48:35 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 1.738\r
+X-Spam-Level: *\r
+X-Spam-Status: No, score=1.738 tagged_above=-999 required=5\r
+ tests=[DNS_FROM_AHBL_RHSBL=2.438, RCVD_IN_DNSWL_LOW=-0.7]\r
+ autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+ by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id AwuNpSZFspjv for <notmuch@notmuchmail.org>;\r
+ Tue, 27 Jan 2015 11:48:32 -0800 (PST)\r
+Received: from mail-we0-f177.google.com (mail-we0-f177.google.com\r
+ [74.125.82.177]) (using TLSv1 with cipher RC4-SHA (128/128 bits))\r
+ (No client certificate requested)\r
+ by olra.theworths.org (Postfix) with ESMTPS id 29F11431FD9\r
+ for <notmuch@notmuchmail.org>; Tue, 27 Jan 2015 11:48:18 -0800 (PST)\r
+Received: by mail-we0-f177.google.com with SMTP id l61so16823263wev.8\r
+ for <notmuch@notmuchmail.org>; Tue, 27 Jan 2015 11:48:16 -0800 (PST)\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=nVNvqY03ODraSJk5c24gwxvw3/U7rRdhTJQQ6EKwvGE=;\r
+ b=c6QwIBM1s7KGNsdMKN1/eyLRaWp8LLgnBJ/I3RzGyoWSQyH9LHSXEF1tSycugL+Bnm\r
+ eq+aqZUDioPLzHgVvN3+Lt7LitGWawsKjXMkw581y+/0koETDX5We3ILagb3dAB5D/e3\r
+ u1vjFlVSAslTmlRL2ZS/njCpHCFIUtSXAWzST7alyygQ8oaNHd0wVBy5bklKl2URzpcO\r
+ UR5TfUEZa+bnZ4Veo13WaVeZuTMn/l/El9SSdKPKr5DepRwJt+6cYGuWduL2F5V8sjQM\r
+ iOZFJN0dO8cPAdkTzgihnP5c4EspB5gwIzVUmtRF2qpqTps0PdhhHyd7VNMSMIstOeA4\r
+ NTEw==\r
+X-Gm-Message-State:\r
+ ALoCoQmvvpl6RvPEhjUausb07QM/x80BD06Q3FQfDRRvYC7/xC/CnMJhiv9DX0veyz8KCd4wi3Vj\r
+X-Received: by 10.194.190.162 with SMTP id gr2mr1249168wjc.13.1422388095900;\r
+ Tue, 27 Jan 2015 11:48:15 -0800 (PST)\r
+Received: from localhost (mobile-internet-5d6ab0-235.dhcp.inet.fi.\r
+ [93.106.176.235])\r
+ by mx.google.com with ESMTPSA id v7sm19439267wib.5.2015.01.27.11.48.14\r
+ (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\r
+ Tue, 27 Jan 2015 11:48:15 -0800 (PST)\r
+From: Jani Nikula <jani@nikula.org>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH 5/5] completion: complete addresses in from:/to: search terms\r
+Date: Tue, 27 Jan 2015 21:48:18 +0200\r
+Message-Id: <1422388098-16333-5-git-send-email-jani@nikula.org>\r
+X-Mailer: git-send-email 2.1.4\r
+In-Reply-To: <1422388098-16333-1-git-send-email-jani@nikula.org>\r
+References: <1422388098-16333-1-git-send-email-jani@nikula.org>\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://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: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Tue, 27 Jan 2015 19:48:36 -0000\r
+\r
+Use the new notmuch address command to do completion for addresses in\r
+from: and to:.\r
+\r
+---\r
+\r
+This patch is more of an RFC. The to: completion is sloooow because\r
+typically there are more matches to begin with, and then producing the\r
+results requires reading the messages. Maybe it would be better to use\r
+the same mechanism as from: for both, even if it's not accurate for\r
+to:?\r
+---\r
+ completion/notmuch-completion.bash | 30 +++++++++++++++++++++++++-----\r
+ 1 file changed, 25 insertions(+), 5 deletions(-)\r
+\r
+diff --git a/completion/notmuch-completion.bash b/completion/notmuch-completion.bash\r
+index e0498903f22f..db49294fc58c 100644\r
+--- a/completion/notmuch-completion.bash\r
++++ b/completion/notmuch-completion.bash\r
+@@ -27,10 +27,30 @@\r
+ # on completion.\r
+ #\r
+ \r
+-_notmuch_user_emails()\r
++# $1: current input of the form prefix:partialinput, where prefix is\r
++# to or from.\r
++_notmuch_email()\r
+ {\r
+- notmuch config get user.primary_email\r
+- notmuch config get user.other_email\r
++ local output prefix cur\r
++\r
++ prefix="${1%%:*}"\r
++ cur="${1#*:}"\r
++\r
++ # Cut the input to be completed at punctuation because\r
++ # (apparently) Xapian does not support the trailing wildcard '*'\r
++ # operator for input with punctuation. We let compgen handle the\r
++ # extra filtering required.\r
++ cur="${cur%%[^a-zA-Z0-9]*}"\r
++\r
++ case "$prefix" in\r
++ to) output=recipients;;\r
++ from) output=sender;;\r
++ *) return;;\r
++ esac\r
++\r
++ # Only emit plain, lower case, unique addresses.\r
++ notmuch address --output=$output $prefix:"${cur}*" | \\r
++ sed 's/[^<]*<\([^>]*\)>/\1/' | tr "[:upper:]" "[:lower:]" | sort -u\r
+ }\r
+ \r
+ _notmuch_search_terms()\r
+@@ -44,10 +64,10 @@ _notmuch_search_terms()\r
+ COMPREPLY=( $(compgen -P "tag:" -W "`notmuch search --output=tags \*`" -- ${cur##tag:}) )\r
+ ;;\r
+ to:*)\r
+- COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_user_emails`" -- ${cur##to:}) )\r
++ COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_email ${cur}`" -- ${cur##to:}) )\r
+ ;;\r
+ from:*)\r
+- COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_user_emails`" -- ${cur##from:}) )\r
++ COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_email ${cur}`" -- ${cur##from:}) )\r
+ ;;\r
+ path:*)\r
+ local path=`notmuch config get database.path`\r
+-- \r
+2.1.4\r
+\r