[PATCH] Make patch saving in vim a little better.
Ian Main
imain at stemwinder.org
Tue Sep 30 14:08:51 PDT 2014
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]
+ # Sanitize for the filesystem
+ file.gsub!(/[^0-9A-Za-z.\-]/, '_')
+ # Remove leading underscores.
+ file.gsub!(/^_+/, '')
+ 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
More information about the notmuch
mailing list