X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=vim%2Fnotmuch.vim;h=9a45300f2683e210cbd21bf0446585819d74492d;hb=2ec69fd39e4b1132032b700ec678d3dfa082c74a;hp=9cfa795d3d36e2d1652709b057d4f6aa802f38ca;hpb=77c2c3143be1f69f10f04f9e5e885a30248c2fd0;p=notmuch diff --git a/vim/notmuch.vim b/vim/notmuch.vim index 9cfa795d..9a45300f 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -208,6 +208,9 @@ endfunction function! s:search_search_prompt() let text = input('Search: ') + if text == "" + return + endif setlocal modifiable ruby << EOF $cur_search = VIM::evaluate('text') @@ -273,12 +276,14 @@ function! s:show_next_thread() endfunction function! s:kill_this_buffer() - ruby $curbuf.close - bdelete! ruby << EOF - $buf_queue.pop - b = $buf_queue.last - VIM::command("buffer #{b}") if b + if $buf_queue.size > 1 + $curbuf.close + VIM::command("bdelete!") + $buf_queue.pop + b = $buf_queue.last + VIM::command("buffer #{b}") if b + end EOF endfunction @@ -412,20 +417,21 @@ function! s:set_defaults() endif endfunction -function! s:NotMuch() +function! s:NotMuch(...) call s:set_defaults() ruby << EOF require 'notmuch' require 'rubygems' require 'tempfile' + require 'socket' begin require 'mail' rescue LoadError end $db_name = nil - $email_address = nil + $email = $email_name = $email_address = nil $searches = [] $buf_queue = [] $threads = [] @@ -450,7 +456,9 @@ ruby << EOF end $db_name = $config['database.path'] - $email_address = "%s <%s>" % [$config['user.name'], $config['user.primary_email']] + $email_name = $config['user.name'] + $email_address = $config['user.primary_email'] + $email = "%s <%s>" % [$email_name, $email_address] end def vim_puts(s) @@ -488,6 +496,14 @@ ruby << EOF end end + def generate_message_id + t = Time.now + random_tag = sprintf('%x%x_%x%x%x', + t.to_i, t.tv_usec, + $$, Thread.current.object_id.abs, rand(255)) + return "<#{random_tag}@#{Socket.gethostname}.notmuch>" + end + def open_reply(orig) help_lines = [ 'Notmuch-Help: Type in your message here; to help you use these bindings:', @@ -500,7 +516,8 @@ ruby << EOF m.to = [orig[:from].to_s, orig[:to].to_s] end m.cc = orig[:cc] - m.from = $email_address + m.from = $email + m.message_id = generate_message_id m.charset = 'utf-8' m.content_transfer_encoding = '7bit' end @@ -549,7 +566,7 @@ ruby << EOF f.flush - VIM::command("let s:reply_from='%s'" % reply.from.first.to_s) + VIM::command("let s:reply_from='%s'" % $email_address) VIM::command("call s:new_file_buffer('compose', '#{f.path}')") VIM::command("call cursor(#{old_count}, 0)") end @@ -863,9 +880,13 @@ ruby << EOF get_config EOF - call s:folders() + if a:0 + call s:search(join(a:000)) + else + call s:folders() + endif endfunction -command NotMuch :call s:NotMuch() +command -nargs=* NotMuch call s:NotMuch() " vim: set noexpandtab: