Re: [PATCH] make http links into buttons
authorDavid Bremner <david@tethera.net>
Sun, 19 Jan 2014 12:23:32 +0000 (08:23 +2000)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:59:08 +0000 (09:59 -0800)
6c/a4447a8b87c8f801d7f03eb978ccacd0a9e60c [new file with mode: 0644]

diff --git a/6c/a4447a8b87c8f801d7f03eb978ccacd0a9e60c b/6c/a4447a8b87c8f801d7f03eb978ccacd0a9e60c
new file mode 100644 (file)
index 0000000..9e7ebec
--- /dev/null
@@ -0,0 +1,167 @@
+Return-Path: <david@tethera.net>\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 33C70431FC0\r
+       for <notmuch@notmuchmail.org>; Sun, 19 Jan 2014 04:23:47 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\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 PKSxq4fONZ2z for <notmuch@notmuchmail.org>;\r
+       Sun, 19 Jan 2014 04:23:40 -0800 (PST)\r
+Received: from yantan.tethera.net (yantan.tethera.net [199.188.72.155])\r
+       (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id D58A3431FBD\r
+       for <notmuch@notmuchmail.org>; Sun, 19 Jan 2014 04:23:40 -0800 (PST)\r
+Received: from remotemail by yantan.tethera.net with local (Exim 4.80)\r
+       (envelope-from <david@tethera.net>)\r
+       id 1W4rPd-0006WW-8S; Sun, 19 Jan 2014 08:23:37 -0400\r
+Received: (nullmailer pid 5548 invoked by uid 1000); Sun, 19 Jan 2014\r
+       12:23:32 -0000\r
+From: David Bremner <david@tethera.net>\r
+To: Mark Walters <markwalters1009@gmail.com>, notmuch@notmuchmail.org\r
+Subject: Re: [PATCH] make http links into buttons\r
+In-Reply-To: <1377240695-825-1-git-send-email-markwalters1009@gmail.com>\r
+References: <1377240695-825-1-git-send-email-markwalters1009@gmail.com>\r
+User-Agent: Notmuch/0.17+35~g3b36898 (http://notmuchmail.org) Emacs/24.3.1\r
+       (x86_64-pc-linux-gnu)\r
+Date: Sun, 19 Jan 2014 08:23:32 -0400\r
+Message-ID: <87mwisqhx7.fsf@zancas.localnet>\r
+MIME-Version: 1.0\r
+Content-Type: multipart/mixed; boundary="=-=-="\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: Sun, 19 Jan 2014 12:23:47 -0000\r
+\r
+--=-=-=\r
+Content-Type: text/plain\r
+\r
+Mark Walters <markwalters1009@gmail.com> writes:\r
+\r
+> This patch replaces the use of goto-address-fontify-region with our\r
+> own code doing roughly the same thing. The advantage is that we\r
+> control how the resulting buttons work. In particular RET on link\r
+> activates the button (in my case opening it in an external browser)\r
+> and TAB stops at these links.\r
+\r
+The attached message behaves a bit strangely under tabbing; it seems to\r
+get stuck in the first signature block.\r
+\r
+\r
+--=-=-=\r
+Content-Type: application/octet-stream\r
+Content-Disposition: attachment; filename="review.eml:2,S"\r
+Content-Transfer-Encoding: base64\r
+\r
+UmV0dXJuLXBhdGg6IDxtYXRoZW1hdGljYWxfc3RhdGlzdGljYWxfc2NpZW5jZXNAbnNhLmdjLmdv\r
+dj4KRW52ZWxvcGUtdG86IHNub3dkZW5AbG9jYWxob3N0CkRlbGl2ZXJ5LWRhdGU6IEZyaSwgMTMg\r
+RGVjIDIwMTMgMTE6MzA6MDYgLTA0MDAKUmVjZWl2ZWQ6IGZyb20gbG9jYWxob3N0IChbMTI3LjAu\r
+MC4xXSBoZWxvPXRlc3NlcmFjdC5jcy5mYmkuZ292KQoJYnkgdGVzc2VyYWN0LmNzLmZiaS5nb3Yg\r
+d2l0aCBlc210cCAoRXhpbSA0LjgwKQoJKGVudmVsb3BlLWZyb20gPG1hdGhlbWF0aWNhbF9zdGF0\r
+aXN0aWNhbF9zY2llbmNlc0Buc2EuZ292PikKCWlkIDFWclVnai0wMDA2cGctR2cKCWZvciBzbm93\r
+ZGVuQGxvY2FsaG9zdDsgRnJpLCAxMyBEZWMgMjAxMyAxMTozMDowNSAtMDQwMApNSU1FLVZlcnNp\r
+b246IDEuMApSZWNlaXZlZDogZnJvbSBmYmltYWlsLmFkLmZiaS5nb3YgWzEzMS4yMDIuNi43OV0K\r
+CWJ5IHRlc3NlcmFjdC5jcy5mYmkuZ292IHdpdGggSU1BUCAoZmV0Y2htYWlsLTYuMy4yMSkKCWZv\r
+ciA8c25vd2RlbkBsb2NhbGhvc3Q+IChzaW5nbGUtZHJvcCk7IEZyaSwgMTMgRGVjIDIwMTMgMTE6\r
+MzA6MDEgLTA0MDAgKEFTVCkKUmVjZWl2ZWQ6IGZyb20gd2ludGVybXV0ZS5hZC5mYmkuZ292ICgx\r
+MzEuMjAyLjEuNTQpIGJ5IHdvcHIuYWQuZmJpLmdvdgogKDEzMS4yMDIuNi44MSkgd2l0aCBNaWNy\r
+b3NvZnQgU01UUCBTZXJ2ZXIgKFRMUykgaWQgMTQuMy4xNzQuMTsgRnJpLCAxMyBEZWMKIDIwMTMg\r
+MTE6Mjk6MTEgLTA0MDAKUmVjZWl2ZWQ6IGZyb20gZmllcm8uaXRzLmZiaS5nb3YgKDEzMS4yMDIu\r
+MS4xMCkgYnkgd2ludGVybXV0ZS5hZC5mYmkuZ292CiAoMTMxLjIwMi4xLjU0KSB3aXRoIE1pY3Jv\r
+c29mdCBTTVRQIFNlcnZlciAoVExTKSBpZCAxNC4zLjE1OC4xOyBGcmksIDEzIERlYwogMjAxMyAx\r
+MToyOToxMSAtMDQwMApSZWNlaXZlZDogZnJvbSBwbXg0Lm5icGVpLWVjbi5nb3YgKHBteDQubmJw\r
+ZWktZWNuLmdvdiBbMTk4LjE2NC4xNjMuMjIyXSkJYnkKIGZpZXJvLml0cy5mYmkuZ292ICg4LjEz\r
+LjgvOC4xMy44KSB3aXRoIEVTTVRQIGlkIHJCREZUQkY3MDA1NzI4CWZvcgogPHNub3dkZW5AZmJp\r
+Lmdvdj47IEZyaSwgMTMgRGVjIDIwMTMgMTE6Mjk6MTEgLTA0MDAKUmVjZWl2ZWQ6IGZyb20gcG14\r
+NC5uYnBlaS1lY24uZ292IChsb2NhbGhvc3QgWzEyNy4wLjAuMV0pCWJ5IGxvY2FsaG9zdAogKFBv\r
+c3RmaXgpIHdpdGggU01UUCBpZCBFQ0JBRUIwMEU3NQlmb3IgPHNub3dkZW5AZmJpLmdvdj47IEZy\r
+aSwgMTMgRGVjIDIwMTMKIDExOjI5OjEwIC0wNDAwIChBU1QpClJlY2VpdmVkOiBmcm9tIGlwbWFp\r
+bDIubnNlcmMuZ292IChpcG1haWwyLm5zZXJjLmdvdiBbMTk4Ljk2LjMuMTExXSkJYnkKIHBteDQu\r
+bmJwZWktZWNuLmdvdiAoUG9zdGZpeCkgd2l0aCBFU01UUCBpZCBBQzVDOUIwMDdCQglmb3IgPHNu\r
+b3dkZW5AZmJpLmdvdj47CiBGcmksIDEzIERlYyAyMDEzIDExOjI5OjEwIC0wNDAwIChBU1QpCk1l\r
+c3NhZ2UtSUQ6IDw2NjZAaXBtYWlsMi5uc2EuZ292PgpYLUlyb25Qb3J0LUFWOiBFPVNvcGhvcztp\r
+PSI0Ljk1LDQ3OSwxMzg0MzE4ODAwIjsgCiAgIGQ9InNjYW4nMjA4IjthPSIxMjE1NzQ5MSIKUmVj\r
+ZWl2ZWQ6IGZyb20gdW5rbm93biAoSEVMTyBPVFRDTlNQVzIuc2VjdXJlLmdvdikgKFsxOTIuMTY4\r
+LjIuOTddKSAgYnkKIGlwbWFpbDIubnNlcmMuZ292IHdpdGggU01UUDsgMTMgRGVjIDIwMTMgMTA6\r
+Mjk6MDcgLTA1MDAKRGF0ZTogRnJpLCAxMyBEZWMgMjAxMyAxMDoyOTowNyAtMDUwMApGcm9tOiA8\r
+bWF0aGVtYXRpY2FsX3N0YXRpc3RpY2FsX3NjaWVuY2VzQG5zYS5nb3Y+ClRvOiA8c25vd2RlbkBm\r
+YmkuZ292PgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CkNvbnRlbnQtVHlwZTogdGV4\r
+dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCIKU3ViamVjdDogYmxhaCBibGFoClgtTWFpbGVyOiBNaWNy\r
+b3NvZnQgU2hhcmVQb2ludCBGb3VuZGF0aW9uIDIwMTAKWC1QTVgtVmVyc2lvbjogNi4wLjMuMjMy\r
+MjAxNCwgQW50aXNwYW0tRW5naW5lOiAyLjcuMi4yMTA3NDA5LCBBbnRpc3BhbS1EYXRhOiAyMDEz\r
+LjEyLjEzLjE1MTgxNQpYLVBlcmxNeC1TcGFtOiBHYXVnZT1YSUlJSUlJSSwgUHJvYmFiaWxpdHk9\r
+MTclLCBSZXBvcnQ9JwogQ1RZUEVfSlVTVF9IVE1MIDAuODQ4LCBIVE1MX01JTUVfTk9fSFRNTF9U\r
+QUcgMC44LCBIVE1MX05PX0hUVFAgMC4xLCBNU0dJRF9BRERFRF9CWV9NVEEgMC4wNSwgU1VQRVJM\r
+T05HX0xJTkUgMC4wNSwgQk9EWVRFWFRIX1NJWkVfMTAwMDBfTEVTUyAwLCBCT0RZX1NJWkVfMzAw\r
+MF8zOTk5IDAsIEJPRFlfU0laRV81MDAwX0xFU1MgMCwgQk9EWV9TSVpFXzcwMDBfTEVTUyAwLCBE\r
+QVRFX1RaX05BIDAsIE5PX1JFQUxfTkFNRSAwLCBTUEZfTk9ORSAwLCBfX0FOWV9VUkkgMCwgX19D\r
+MjMwMDY2X1A1IDAsIF9fQ1QgMCwgX19DVEUgMCwgX19DVFlQRV9IVE1MIDAsIF9fQ1RZUEVfSVNf\r
+SFRNTCAwLCBfX0hBU19GUk9NIDAsIF9fSEFTX0hUTUwgMCwgX19IQVNfTVNHSUQgMCwgX19IQVNf\r
+WF9NQUlMRVIgMCwgX19ISUdIQklUUyAwLCBfX01JTUVfSFRNTCAwLCBfX01JTUVfSFRNTF9PTkxZ\r
+IDAsIF9fTUlNRV9WRVJTSU9OIDAsIF9fU0FORV9NU0dJRCAwLCBfX1NVQkpfQUxQSEFfRU5EIDAs\r
+IF9fU1VCSl9BTFBIQV9FTkQyIDAsIF9fU1VCSl9BTFBIQV9ORUdBVEUgMCwgX19TVUJKX0hJR0hC\r
+SVQgMCwgX19UT19NQUxGT1JNRURfMiAwLCBfX1RPX05PX05BTUUgMCwgX19VUklfTk9fUEFUSCAw\r
+LCBfX1VSSV9OUyAsIF9fVVNFUl9BR0VOVF9NU19HRU5FUklDIDAsIF9fVVRGOF9TVUJKIDAnClgt\r
+TVMtRXhjaGFuZ2UtT3JnYW5pemF0aW9uLUFudGlzcGFtLVJlcG9ydDogQ29udGVudEZpbHRlckNv\r
+bmZpZ0J5cGFzc2VkU2VuZGVyClgtTVMtRXhjaGFuZ2UtT3JnYW5pemF0aW9uLUFWU3RhbXAtTWFp\r
+bGJveDogTVNGVEZGOzE7MDswIDAgMApYLU1TLUV4Y2hhbmdlLU9yZ2FuaXphdGlvbi1TQ0w6IC0x\r
+ClgtTVMtRXhjaGFuZ2UtT3JnYW5pemF0aW9uLUF1dGhTb3VyY2U6IHdpbnRlcm11dGUuYWQuZmJp\r
+LmdvdgpYLU1TLUV4Y2hhbmdlLU9yZ2FuaXphdGlvbi1BdXRoQXM6IEFub255bW91cwpYLVNwYW0t\r
+U2NvcmU6IDEuOApYLVNwYW1fYmFyOiArCgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi\r
+IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+KExlIGZyYW7Dp2FpcyBzdWl0IGzi\r
+gJlhbmdsYWlzKQogCjxwPiBEZWFyIERyLiBTbm93ZGVuOiA8L3A+CgoKPHA+IFlvdXIgVXNlcm5h\r
+bWUgaXM6IHNub3dkZW5AZmJpLmdvdiA8L3A+Cgo8cD4gSWYgeW91IGhhdmUgZm9yZ290dGVuIHlv\r
+dXIgUGFzc3dvcmQsIHNlbGVjdCA8c3Ryb25nPkkgRm9yZ290IG15IFBhc3N3b3JkPC9zdHJvbmc+\r
+IG9uIHRoZSBsb2dpbiBwYWdlLiA8L3A+Cgo8cD4gVG8gYWNjZXNzIHRoZSByZWZlcmVlIGV4dHJh\r
+bmV0LCBnbyB0byA8YSBocmVmPSJodHRwczovL2luZmx1ZW5jZS5uc2EuZ292L3Nla3JpdC5hc3B4\r
+Ij5odHRwczovL2luZmx1ZW5jZS5uc2EuZ292L3Nla3JpdC5hc3B4PC9hPi4gPC9wPgoKCjxwPjxz\r
+dHJvbmc+VGVjaG5pY2FsIFN1cHBvcnQ8L3N0cm9uZz48YnI+CkNvbnRhY3QgdGhlIE9uLWxpbmUg\r
+U2VydmljZXMgSGVscGRlc2sgYXQgOTk5LTk5OS0wMDAwIG9yIGJ5IGVtYWlsIGF0IDxhIGhyZWY9\r
+Im1haWx0bzp3ZWJhcHBAbnNhLmdvdiI+d2ViYXBwQG5zYS5nb3Y8L2E+LiBJbiB5b3VyIG1lc3Nh\r
+Z2UsIHBsZWFzZSBpbmNsdWRlIHlvdXIgZW1haWwgYWRkcmVzcyBhbmQgdGVsZXBob25lIG51bWJl\r
+ci4gSG91cnMgb2Ygc2VydmljZSBhcmUgZnJvbSA4OjMwIGEubS4gdG8gNDozMCBwLm0uIChFU1Qp\r
+LCBNb25kYXkgdG8gRnJpZGF5LiA8L3A+Cgo8cD5SZWdhcmRzLCA8L3A+CgoKPHA+IDxzdHJvbmc+\r
+IEogRWRnYXIgSG9vdmVyIDwvc3Ryb25nPgpSZXNlYXJjaCBHcmFudHMgYW5kIFNjaG9sYXJzaGlw\r
+cyB8IFN1YnZlbnRpb25zIGRlIHJlY2hlcmNoZSBldCBib3Vyc2VzPGJyPgo8YnI+Ci0tPGJyPgo8\r
+YSBocmVmPSJtYWlsdG86bWF0aGVtYXRpY2FsX3N0YXRpc3RpY2FsX3NjaWVuY2VzQG5zYS5nb3Yi\r
+Pm1hdGhlbWF0aWNhbF9zdGF0aXN0aWNhbF9zY2llbmNlc0Buc2EuZ292PC9hPjxicj4KPGJyPgo8\r
+YSBocmVmPSJ3d3cubnNhLmdvdiI+IHd3dy5uc2EuZ292PC9hPiAgfCA8YSBocmVmPSJ3d3cuY2lh\r
+LmdvdiI+IHd3dy5jaWEuZ292PC9hPjxicj4KCjwvcD4KCjxwPl9fX19fX19fX19fX188L3A+Cgo8\r
+cD4gTWFkYW1lL01vbnNpZXVyLCA8L3A+CgoKPHA+IFZvdHJlIG5vbSBk4oCZdXRpbGlzYXRldXIg\r
+ZXN0IDogc25vd2RlbkBmYmkuZ292IDwvcD4KCjxwPiBTaSB2b3VzIGF2ZXogb3VibGnDqSB2b3Ry\r
+ZSBtb3QgZGUgcGFzc2UsIHPDqWxlY3Rpb25uZXogPHN0cm9uZz5KJ2FpIG91Ymxpw6kgbW9uIG1v\r
+dCBkZSBwYXNzZTwvc3Ryb25nPiDDoCBsYSBwYWdlIGTigJlvdXZlcnR1cmUgZGUgc2Vzc2lvbiBk\r
+ZSBs4oCZZXh0cmFuZXQuIDwvcD4KCgo8cD4gUG91ciBhY2PDqWRlciDDoCBs4oCZZXh0cmFuZXQs\r
+IHJlbmRlei12b3VzIMOgIDxhIGhyZWY9Imh0dHBzOi8vaW5mbHVlbmNlLm5zYS5nb3Yvc2Vrcml0\r
+LmFzcHgiPmh0dHBzOi8vaW5mbHVlbmNlLm5zYS5nb3Yvc2Vrcml0LmFzcHg8L2E+LiA8L3A+Cgo8\r
+cD4gPHN0cm9uZz5Tb3V0aWVuIHRlY2huaXF1ZTwvc3Ryb25nPjxicj4KIFZldWlsbGV6IGNvbW11\r
+bmlxdWVyIGF2ZWMgbGUgU2VydmljZSBkZSBkw6lwYW5uYWdlIGRlcyBzZXJ2aWNlcyDDqWxlY3Ry\r
+b25pcXVlcyBwYXIgdMOpbMOpcGhvbmUgYXU5OTktOTk5LTAwMDAgb3UgcGFyIGNvdXJyaWVsIMOg\r
+IDxhIGhyZWY9Im1haWx0bzp3ZWJhcHBAbnNhLmdvdiI+d2ViYXBwQG5zYS5nb3Y8L2E+IGV0IGlu\r
+ZGlxdWVyIGRhbnMgdm90cmUgbWVzc2FnZSB2b3RyZSBhZHJlc3NlIGRlIGNvdXJyaWVsIGV0IHZv\r
+dHJlIG51bcOpcm8gZGUgdMOpbMOpcGhvbmUuIExlcyBoZXVyZXMgZGUgc2VydmljZSBzb250IGRl\r
+IDggaCAzMCDDoCAxNiBoIDMwIChoZXVyZSBkZSBs4oCZRXN0KSBkdSBsdW5kaSBhdSB2ZW5kcmVk\r
+aS4gPC9wPgoKPHA+IFNpbmPDqHJlcyBzYWx1dGF0aW9ucywgPC9wPgoKPHA+IDxzdHJvbmc+SiBF\r
+ZGdhciBIb292ZXIgPC9zdHJvbmc+IDxicj4KUmVzZWFyY2ggR3JhbnRzIGFuZCBTY2hvbGFyc2hp\r
+cHMgfCBTdWJ2ZW50aW9ucyBkZSByZWNoZXJjaGUgZXQgYm91cnNlczxicj4KPGJyPgotLTxicj4K\r
+PGEgaHJlZj0ibWFpbHRvOm1hdGhlbWF0aWNhbF9zdGF0aXN0aWNhbF9zY2llbmNlc0Buc2EuZ292\r
+Ij5tYXRoZW1hdGljYWxfc3RhdGlzdGljYWxfc2NpZW5jZXNAbnNhLmdvdjwvYT48YnI+Cjxicj4K\r
+PGEgaHJlZj0id3d3Lm5zYS5nb3YiPiB3d3cubnNhLmdvdjwvYT4gIHwgPGEgaHJlZj0id3d3LmNp\r
+YS5nb3YiPiB3d3cuY2lhLmdvdjwvYT48YnI+Cgo8L3A+Cg==\r
+--=-=-=--\r