[RFC PATCHv2 7/8] vim: mailcap: show all alternatives if none preferred

2016-10-13 Thread Nick Howell
Display all parts of a multipart/alternative message (or message-part) if no alternative_preference matches any of the alternative mimetypes. E.g. if a message is multipart/alternative with options text/plain and text/html, and the alternative_preference is ['application/pdf'], no preference optio

[RFC PATCHv2 8/8] vim: mailcap: handle mailcap failure gracefully

2016-10-13 Thread Nick Howell
--- vim/notmuch.vim | 6 ++ 1 file changed, 6 insertions(+) diff --git a/vim/notmuch.vim b/vim/notmuch.vim index cdcaa5f..79a0e27 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -374,6 +374,12 @@ ruby << EOF io.each_line do |l|

[RFC PATCHv2 6/8] vim: show: add multipart/alternative picking

2016-10-13 Thread Nick Howell
Instead of just blindly showing every part of multipart/*, add special handling for multipart/alternative (which is designed for alternative content-types containing the same message). Two new preferences are added: - g:notmuch_multipart_alternative_display = "best-only" (default)

[RFC PATCHv2 5/8] vim: mailcap: redraw after processing

2016-10-13 Thread Nick Howell
--- vim/notmuch.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/vim/notmuch.vim b/vim/notmuch.vim index a20dd86..5cb8d20 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -370,6 +370,7 @@ ruby << EOF VIM::command("syntax region nmShowMsg#{i}Body start='\\%%%il' end='\\

[RFC PATCHv2 3/8] vim: mailcap: gracefully handle missing mimetype

2016-10-13 Thread Nick Howell
Some plaintext messages do not specify a mimetype. Instead of failing in this situation, just assume the part is plaintext. (Maybe a better strategy would be to check if the message contains non-unicode first?) --- vim/notmuch.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --g

[RFC PATCHv2 4/8] vim: mailcap: don't corrupt the view if filters write to stderr

2016-10-13 Thread Nick Howell
--- vim/notmuch.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/notmuch.vim b/vim/notmuch.vim index 89fa2dc..a20dd86 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -347,7 +347,7 @@ ruby << EOF parts.each do |part|

[RFC PATCHv2 2/8] vim: mailcap: forbid access to display server

2016-10-13 Thread Nick Howell
Default to prevent mailcap from accessing the display server. Potential concerns: a malicious .mailcap file + attachment could read your keystrokes, or if the .mailcap file is non-malicious, an attachment exploiting a vulnerability in your mailcap viewer. In principle we should probably try to run

[RFC PATCHv2 0/8] vim: add mailcap filtering to show

2016-10-13 Thread Nick Howell
). Probably we should choose a more secure default, e.g. whitelisting environment variables. It would be nice to recommend the use of a sandbox. Changes v1..v2: - add missing patch "add multipart/alternative picking" - correct poor conflict resolution in "handle mailcap failure gr

[RFC PATCH 5/7] vim: mailcap: redraw after processing

2016-10-13 Thread Nick Howell
--- vim/notmuch.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/vim/notmuch.vim b/vim/notmuch.vim index a20dd86..5cb8d20 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -370,6 +370,7 @@ ruby << EOF VIM::command("syntax region nmShowMsg#{i}Body start='\\%%%il' end='\\

[RFC PATCH 3/7] vim: mailcap: gracefully handle missing mimetype

2016-10-13 Thread Nick Howell
Some plaintext messages do not specify a mimetype. Instead of failing in this situation, just assume the part is plaintext. (Maybe a better strategy would be to check if the message contains non-unicode first?) --- vim/notmuch.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --g

[RFC PATCH 4/7] vim: mailcap: don't corrupt the view if filters write to stderr

2016-10-13 Thread Nick Howell
--- vim/notmuch.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/notmuch.vim b/vim/notmuch.vim index 89fa2dc..a20dd86 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -347,7 +347,7 @@ ruby << EOF parts.each do |part|

[RFC PATCHv2 1/8] vim: show: add mailcap filtering

2016-10-13 Thread Nick Howell
Add mailcap filters, which allow us to display multiple parts. See http://packages.debian.org/unstable/net/mime-support for details on run-mailcap, the mailcap program we default to; the TLDR is that mailcap is a program which accepts a mimetype argument, looks up a translation program based on th

[RFC PATCH 2/7] vim: mailcap: forbid access to display server

2016-10-13 Thread Nick Howell
Default to prevent mailcap from accessing the display server. Potential concerns: a malicious .mailcap file + attachment could read your keystrokes, or if the .mailcap file is non-malicious, an attachment exploiting a vulnerability in your mailcap viewer. In principle we should probably try to run

[RFC PATCH 1/7] vim: show: add mailcap filtering

2016-10-13 Thread Nick Howell
Add mailcap filters, which allow us to display multiple parts. See http://packages.debian.org/unstable/net/mime-support for details on run-mailcap, the mailcap program we default to; the TLDR is that mailcap is a program which accepts a mimetype argument, looks up a translation program based on th

[RFC PATCH 7/7] vim: mailcap: handle mailcap failure gracefully

2016-10-13 Thread Nick Howell
--- vim/notmuch.vim | 8 1 file changed, 8 insertions(+) diff --git a/vim/notmuch.vim b/vim/notmuch.vim index da747eb..e9baeff 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -370,6 +370,14 @@ ruby << EOF io.each_line do |l|

[RFC PATCH 6/7] vim: mailcap: show all alternatives if none preferred

2016-10-13 Thread Nick Howell
Display all parts of a multipart/alternative message (or message-part) if no alternative_preference matches any of the alternative mimetypes. E.g. if a message is multipart/alternative with options text/plain and text/html, and the alternative_preference is ['application/pdf'], no preference optio

[RFC PATCH 2/2] vim: compose: attachment support

2016-10-13 Thread Nick Howell
Adds attachment support through the mail gem. Notmuch-Attach headers list files which are added to the message before sending. Files are added by constructing a new post-processed transport Mail object using the Notmuch-Attach header and the original Mail object. Any attachments added (say by hand

[RFC PATCH 1/2] vim: compose: support additional Notmuch- filters

2016-10-13 Thread Nick Howell
Add support for additional Notmuch-* headers: special headers read (and then removed) by vnm upon send. The plan is to use these special headers for all sorts of fancy features: attachments, PGP, whatever, so that the inputs to these features are editable from vim. For the moment, this just factor

[RFC PATCH 0/7] vim: add mailcap filtering to show

2016-10-13 Thread Nick Howell
). Nick Howell (7): vim: show: add mailcap filtering vim: mailcap: forbid access to display server vim: mailcap: gracefully handle missing mimetype vim: mailcap: don't corrupt the view if filters write to stderr vim: mailcap: redraw after processing vim: mailcap: show all alternativ

[RFC PATCH 0/2] vim: add "attach" support to compose

2016-10-13 Thread Nick Howell
r, and adds logic to process the header on-send. Nick Howell (2): vim: compose: support additional Notmuch- filters vim: compose: attachment support vim/notmuch.vim| 67 ++ vim/syntax/notmuch-compose.vim | 5 2 files changed, 61 inserti

Re: Status of Vim client

2016-10-12 Thread Nick Howell
Nick Howell wrote: > I have a few patchsets adding: > - attachment support in compose > - mailcap support for multipart messages Mildly clean (imo), independent versions of these have been sent to the mailing list; they are meant to be applied on-top of felipec's repository. (I

Re: Status of Vim client

2016-10-09 Thread Nick Howell
Lewis wrote: > I'm also aware of two Vim clients on GitHub: > > * https://github.com/felipec/notmuch-vim (last commit: 2014-05-22) > > * https://github.com/imain/notmuch-vim (last commit: 2015-08-24) > > So, are the clients really stable, or are they rotting because nobody > uses them? My hope