--- /dev/null
+Return-Path: <amdragon@mit.edu>\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 09333431FD7\r
+ for <notmuch@notmuchmail.org>; Tue, 12 Nov 2013 14:46:34 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.7\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
+ tests=[RCVD_IN_DNSWL_LOW=-0.7] 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 XbQHPjNUy3J4 for <notmuch@notmuchmail.org>;\r
+ Tue, 12 Nov 2013 14:46:26 -0800 (PST)\r
+Received: from dmz-mailsec-scanner-2.mit.edu (dmz-mailsec-scanner-2.mit.edu\r
+ [18.9.25.13])\r
+ (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
+ (No client certificate requested)\r
+ by olra.theworths.org (Postfix) with ESMTPS id 51255431FCF\r
+ for <notmuch@notmuchmail.org>; Tue, 12 Nov 2013 14:46:26 -0800 (PST)\r
+X-AuditID: 1209190d-b7ef66d000000c40-98-5282afc1d99b\r
+Received: from mailhub-auth-3.mit.edu ( [18.9.21.43])\r
+ (using TLS with cipher AES256-SHA (256/256 bits))\r
+ (Client did not present a certificate)\r
+ by dmz-mailsec-scanner-2.mit.edu (Symantec Messaging Gateway) with SMTP\r
+ id 3D.99.03136.1CFA2825; Tue, 12 Nov 2013 17:46:25 -0500 (EST)\r
+Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])\r
+ by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id rACMkOdj025468; \r
+ Tue, 12 Nov 2013 17:46:25 -0500\r
+Received: from awakening.csail.mit.edu (awakening.csail.mit.edu [18.26.4.91])\r
+ (authenticated bits=0)\r
+ (User authenticated as amdragon@ATHENA.MIT.EDU)\r
+ by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id rACMkMDp022443\r
+ (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT);\r
+ Tue, 12 Nov 2013 17:46:24 -0500\r
+Received: from amthrax by awakening.csail.mit.edu with local (Exim 4.80)\r
+ (envelope-from <amdragon@mit.edu>)\r
+ id 1VgMj0-000725-NV; Tue, 12 Nov 2013 17:46:22 -0500\r
+Date: Tue, 12 Nov 2013 17:46:22 -0500\r
+From: Austin Clements <amdragon@MIT.EDU>\r
+To: Mark Walters <markwalters1009@gmail.com>\r
+Subject: Re: [PATCH v4 0/7] emacs: help: remap keybindings\r
+Message-ID: <20131112224622.GC13399@mit.edu>\r
+References: <1384287059-3525-1-git-send-email-markwalters1009@gmail.com>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=us-ascii\r
+Content-Disposition: inline\r
+In-Reply-To: <1384287059-3525-1-git-send-email-markwalters1009@gmail.com>\r
+User-Agent: Mutt/1.5.21 (2010-09-15)\r
+X-Brightmail-Tracker:\r
+ H4sIAAAAAAAAA+NgFmpileLIzCtJLcpLzFFi42IR4hTV1j24vinI4PtkXYvVc3ksrt+cyezA\r
+ 5LFz1l12j2erbjEHMEVx2aSk5mSWpRbp2yVwZUzc/YCp4LpIxbppTg2MCwS6GDk5JARMJPb3\r
+ f2KDsMUkLtxbD2RzcQgJzGaSWPLkIDuEs5FR4sv161CZ00wSs54vYIRwljBK3P3/gBmkn0VA\r
+ VWL56sNgs9gENCS27V/OCGKLCOhI3D60gB3EZhaQlvj2u5kJxBYWsJJoW98FVs8LVPPw0W8W\r
+ EFtIwEPi6JstTBBxQYmTM5+wQPRqSdz49xIozgE2Z/k/DpAwp4CnROObv2AniAqoSEw5uY1t\r
+ AqPQLCTds5B0z0LoXsDIvIpRNiW3Sjc3MTOnODVZtzg5MS8vtUjXSC83s0QvNaV0EyM4qCV5\r
+ dzC+O6h0iFGAg1GJh9cipilIiDWxrLgy9xCjJAeTkihvxFqgEF9SfkplRmJxRnxRaU5q8SFG\r
+ CQ5mJRFe6TVAOd6UxMqq1KJ8mJQ0B4uSOO9NDvsgIYH0xJLU7NTUgtQimKwMB4eSBO+EdUCN\r
+ gkWp6akVaZk5JQhpJg5OkOE8QMOrQWp4iwsSc4sz0yHypxgVpcR5Z4MkBEASGaV5cL2wpPOK\r
+ URzoFWHeepAqHmDCgut+BTSYCWiwRTHY4JJEhJRUA2NMjmq0drHOkZT3N63j/k6K8pgo25uv\r
+ O6W/cnrJzZi+Wzc1m3Nro3+4JthXqzic5d/atOlA9VaZmTUK9jyvVqhvmzjxe9Fdg6Cu3RMK\r
+ OaS6T+4/ckYzZMUdefXXV19WLo6u6ds6fb3cxeTK0tr6v0cdWDcdSe7jTdc8td9vdlFhr2BR\r
+ WJ+MuxJLcUaioRZzUXEiAP+aZhAVAwAA\r
+Cc: notmuch@notmuchmail.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, 12 Nov 2013 22:46:34 -0000\r
+\r
+LGTM.\r
+\r
+Quoth Mark Walters on Nov 12 at 8:10 pm:\r
+> This is v4 of this patch set. v3 is at id:1383932419-12533-1-git-send-email-markwalters1009@gmail.com.\r
+> \r
+> David found a bug in v3 which I tracked down to some match-data being\r
+> over-written. This included the bugfix\r
+> id:1384076682-16872-1-git-send-email-markwalters1009@gmail.com which\r
+> is folded into this series as the second patch.\r
+> \r
+> The diff v3+bugfix is below: it does the save-match-data as Austin\r
+> suggested, and it removes an accidental added comment which I put in\r
+> when finding the bug.\r
+> \r
+> I have also left off the last "testing patch" (a patch that added some\r
+> functionality to make it easier to test the help routine but not\r
+> something that should be added to mainline)\r
+> \r
+> Best wishes\r
+> \r
+> Mark\r
+> \r
+> diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el\r
+> index 20ed1fb..0655bdd 100644\r
+> --- a/emacs/notmuch-lib.el\r
+> +++ b/emacs/notmuch-lib.el\r
+> @@ -305,16 +305,15 @@ prefix argument. PREFIX and TAIL are used internally."\r
+> (defun notmuch-substitute-command-keys (doc)\r
+> "Like `substitute-command-keys' but with documentation, not function names."\r
+> (let ((beg 0))\r
+> - (while (string-match "\\\\{\\([^}[:space:]]*\\)}" doc beg) ;; matches \{not-space}\r
+> + (while (string-match "\\\\{\\([^}[:space:]]*\\)}" doc beg)\r
+> (let ((desc\r
+> (save-match-data\r
+> (let* ((keymap-name (substring doc (match-beginning 1) (match-end 1)))\r
+> (keymap (symbol-value (intern keymap-name)))\r
+> (ua-keys (where-is-internal 'universal-argument keymap t))\r
+> (desc-alist (notmuch-describe-keymap keymap ua-keys keymap))\r
+> - (desc-list (mapcar (lambda (arg) (concat (car arg) "\t" (cdr arg))) desc-alist))\r
+> - (desc (mapconcat #'identity desc-list "\n")))\r
+> - desc))))\r
+> + (desc-list (mapcar (lambda (arg) (concat (car arg) "\t" (cdr arg))) desc-alist)))\r
+> + (mapconcat #'identity desc-list "\n")))))\r
+> (setq doc (replace-match desc 1 1 doc)))\r
+> (setq beg (match-end 0)))\r
+> doc))\r
+> \r
+> \r
+> \r
+> \r
+> Mark Walters (7):\r
+> emacs: help: check for nil key binding\r
+> emacs: help: save-match-data\r
+> emacs: help: remove duplicate bindings\r
+> emacs: help: split out notmuch-describe-key as a function\r
+> emacs: help: add base-keymap\r
+> emacs: help: add a special function to deal with remaps\r
+> emacs: tree: use remap for the over-ridden global bindings\r
+> \r
+> emacs/notmuch-lib.el | 85 ++++++++++++++++++++++++++++++++++--------------\r
+> emacs/notmuch-tree.el | 8 ++--\r
+> 2 files changed, 64 insertions(+), 29 deletions(-)\r
+> \r