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