[PATCH] Make patch saving in vim a little better.
Tomi Ollila
tomi.ollila at iki.fi
Sun Oct 19 02:39:33 PDT 2014
On Wed, Oct 01 2014, Ian Main <imain at stemwinder.org> wrote:
> It seems like there was some bitrot on the previous version of this
> which made it not work correctly. This fixes the bitrot and also
> updates how it works.
>
> - Sometimes [PATCH.*] isn't at the beginning of the message (often on
> lists I'm on).
> - It now goes through all the messages in the thread. for some reason
> the toplevel messages didn't usually contain all the patches in my
> testing.
> - Check for 'Re:' at the beginning and skip if it's there.
> - Save patches to filesystem-safe filename containing the subject
> (unfortunately we use system()...)
>
> Ian
> ---
> vim/notmuch.vim | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/vim/notmuch.vim b/vim/notmuch.vim
> index b33c6c6..d80f22f 100644
> --- a/vim/notmuch.vim
> +++ b/vim/notmuch.vim
> @@ -182,12 +182,18 @@ ruby << EOF
> q = $curbuf.query($cur_thread)
> t = q.search_threads.first
> n = 0
> - t.toplevel_messages.first.replies.each do |m|
> - next if not m['subject'] =~ /^\[PATCH.*\]/
> - file = "%04d.patch" % [n += 1]
> + t.messages.each do |m|
> + next if not m['subject'] =~ /\[PATCH.*\]/
> + next if m['subject'] =~ /^Re:/
> + file = "#{m['subject']}-%04d.patch" % [n += 1]
Is the subject here taken from first message in the thread or
is the subject changing in every message ? If the name is changing
(which I presume, cannot test), the list of files will look a bit
confusing. This could follow the git patch naming where the number is at
the beginning of filename.
> + # Sanitize for the filesystem
> + file.gsub!(/[^0-9A-Za-z.\-]/, '_')
> + # Remove leading underscores.
> + file.gsub!(/^_+/, '')
The naming could also follow git way, dashes (-) between words and
replacing multiple --:s with just one - (like gsub(/--+/, '-'))
-- but in this case there could something in the filename to distinguish
from git patches as these patches may be `git am` -incompatible.
> + vim_puts "Saving patch to #{file}"
> system "notmuch show --format=mbox id:#{m.message_id} > #{file}"
> end
> - vim_puts "Saved #{n} patches"
> + vim_puts "Saved #{n} patch(es)"
> EOF
> endfunction
>
> --
> 1.9.3
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
More information about the notmuch
mailing list