X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fnotmuch.vim;h=fc9eaa24ecc8526a95bed6bc9a072c95e83b5477;hp=8383fd65a5448b3610fee105235720419d5f4464;hb=2c3623703f4bd1dbe1d5ca47c4bf55e208db12b2;hpb=de74431cfeb24ca72f6dfa4df93130ba49c59219 diff --git a/vim/notmuch.vim b/vim/notmuch.vim index 8383fd65..fc9eaa24 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -1,4 +1,4 @@ -if exists("g:loaded_notmuch_rb") +if exists("g:loaded_notmuch") finish endif @@ -6,15 +6,16 @@ if !has("ruby") || version < 700 finish endif -let g:loaded_notmuch_rb = "yep" +let g:loaded_notmuch = "yep" -let g:notmuch_rb_folders_maps = { +let g:notmuch_folders_maps = { \ '': 'folders_show_search()', \ 's': 'folders_search_prompt()', \ '=': 'folders_refresh()', + \ 'c': 'compose()', \ } -let g:notmuch_rb_search_maps = { +let g:notmuch_search_maps = { \ 'q': 'kill_this_buffer()', \ '': 'search_show_thread(1)', \ '': 'search_show_thread(2)', @@ -24,9 +25,10 @@ let g:notmuch_rb_search_maps = { \ 's': 'search_search_prompt()', \ '=': 'search_refresh()', \ '?': 'search_info()', + \ 'c': 'compose()', \ } -let g:notmuch_rb_show_maps = { +let g:notmuch_show_maps = { \ 'q': 'kill_this_buffer()', \ 'A': 'show_tag("-inbox -unread")', \ 'I': 'show_tag("-unread")', @@ -38,44 +40,25 @@ let g:notmuch_rb_show_maps = { \ 'r': 'show_reply()', \ '?': 'show_info()', \ '': 'show_next_msg()', + \ 'c': 'compose()', \ } -let g:notmuch_rb_compose_maps = { +let g:notmuch_compose_maps = { \ ',s': 'compose_send()', \ ',q': 'compose_quit()', \ } -let s:notmuch_rb_folders_default = [ +let s:notmuch_folders_default = [ \ [ 'new', 'tag:inbox and tag:unread' ], \ [ 'inbox', 'tag:inbox' ], \ [ 'unread', 'tag:unread' ], \ ] -let s:notmuch_rb_date_format_default = '%d.%m.%y' -let s:notmuch_rb_datetime_format_default = '%d.%m.%y %H:%M:%S' -let s:notmuch_rb_reader_default = 'mutt -f %s' -let s:notmuch_rb_sendmail_default = 'sendmail' -let s:notmuch_rb_folders_count_threads_default = 0 - -if !exists('g:notmuch_rb_date_format') - let g:notmuch_rb_date_format = s:notmuch_rb_date_format_default -endif - -if !exists('g:notmuch_rb_datetime_format') - let g:notmuch_rb_datetime_format = s:notmuch_rb_datetime_format_default -endif - -if !exists('g:notmuch_rb_reader') - let g:notmuch_rb_reader = s:notmuch_rb_reader_default -endif - -if !exists('g:notmuch_rb_sendmail') - let g:notmuch_rb_sendmail = s:notmuch_rb_sendmail_default -endif - -if !exists('g:notmuch_rb_folders_count_threads') - let g:notmuch_rb_folders_count_threads = s:notmuch_rb_folders_count_threads_default -endif +let s:notmuch_date_format_default = '%d.%m.%y' +let s:notmuch_datetime_format_default = '%d.%m.%y %H:%M:%S' +let s:notmuch_reader_default = 'mutt -f %s' +let s:notmuch_sendmail_default = 'sendmail' +let s:notmuch_folders_count_threads_default = 0 function! s:new_file_buffer(type, fname) exec printf('edit %s', a:fname) @@ -143,7 +126,15 @@ endfunction function! s:show_reply() ruby open_reply get_message.mail let b:compose_done = 0 - call s:set_map(g:notmuch_rb_compose_maps) + call s:set_map(g:notmuch_compose_maps) + autocmd BufUnload call s:compose_unload() + startinsert! +endfunction + +function! s:compose() + ruby open_compose + let b:compose_done = 0 + call s:set_map(g:notmuch_compose_maps) autocmd BufUnload call s:compose_unload() startinsert! endfunction @@ -168,7 +159,7 @@ function! s:show_open_msg() ruby << EOF m = get_message mbox = File.expand_path('~/.notmuch/vim_mbox') - cmd = VIM::evaluate('g:notmuch_rb_reader') % mbox + cmd = VIM::evaluate('g:notmuch_reader') % mbox system "notmuch show --format=mbox id:#{m.message_id} > #{mbox} && #{cmd}" EOF endfunction @@ -329,7 +320,7 @@ ruby << EOF part = m.find_first_text nm_m = Message.new(msg, m) $messages << nm_m - date_fmt = VIM::evaluate('g:notmuch_rb_datetime_format') + date_fmt = VIM::evaluate('g:notmuch_datetime_format') date = Time.at(msg.date).strftime(date_fmt) nm_m.start = b.count b << "%s %s (%s)" % [msg['from'], date, msg.tags] @@ -354,7 +345,7 @@ ruby << EOF end EOF setlocal nomodifiable - call s:set_map(g:notmuch_rb_show_maps) + call s:set_map(g:notmuch_show_maps) endfunction function! s:search_show_thread(mode) @@ -377,7 +368,7 @@ ruby << EOF search_render($cur_search) EOF call s:set_menu_buffer() - call s:set_map(g:notmuch_rb_search_maps) + call s:set_map(g:notmuch_search_maps) autocmd CursorMoved call s:show_cursor_moved() endfunction @@ -393,26 +384,73 @@ function! s:folders() call s:new_buffer('folders') ruby folders_render() call s:set_menu_buffer() - call s:set_map(g:notmuch_rb_folders_maps) + call s:set_map(g:notmuch_folders_maps) endfunction "" root function! s:set_defaults() - if exists('g:notmuch_rb_custom_search_maps') - call extend(g:notmuch_rb_search_maps, g:notmuch_rb_custom_search_maps) + if !exists('g:notmuch_date_format') + if exists('g:notmuch_rb_date_format') + let g:notmuch_date_format = g:notmuch_rb_date_format + else + let g:notmuch_date_format = s:notmuch_date_format_default + endif + endif + + if !exists('g:notmuch_datetime_format') + if exists('g:notmuch_rb_datetime_format') + let g:notmuch_datetime_format = g:notmuch_rb_datetime_format + else + let g:notmuch_datetime_format = s:notmuch_datetime_format_default + endif + endif + + if !exists('g:notmuch_reader') + if exists('g:notmuch_rb_reader') + let g:notmuch_reader = g:notmuch_rb_reader + else + let g:notmuch_reader = s:notmuch_reader_default + endif + endif + + if !exists('g:notmuch_sendmail') + if exists('g:notmuch_rb_sendmail') + let g:notmuch_sendmail = g:notmuch_rb_sendmail + else + let g:notmuch_sendmail = s:notmuch_sendmail_default + endif + endif + + if !exists('g:notmuch_folders_count_threads') + if exists('g:notmuch_rb_count_threads') + let g:notmuch_count_threads = g:notmuch_rb_count_threads + else + let g:notmuch_folders_count_threads = s:notmuch_folders_count_threads_default + endif + endif + + if !exists('g:notmuch_custom_search_maps') && exists('g:notmuch_rb_custom_search_maps') + let g:notmuch_custom_search_maps = g:notmuch_rb_custom_search_maps + endif + + if !exists('g:notmuch_custom_show_maps') && exists('g:notmuch_rb_custom_show_maps') + let g:notmuch_custom_show_maps = g:notmuch_rb_custom_show_maps + endif + + if exists('g:notmuch_custom_search_maps') + call extend(g:notmuch_search_maps, g:notmuch_custom_search_maps) endif - if exists('g:notmuch_rb_custom_show_maps') - call extend(g:notmuch_rb_show_maps, g:notmuch_rb_custom_show_maps) + if exists('g:notmuch_custom_show_maps') + call extend(g:notmuch_show_maps, g:notmuch_custom_show_maps) endif - " TODO for now lets check the old folders too - if !exists('g:notmuch_rb_folders') - if exists('g:notmuch_folders') - let g:notmuch_rb_folders = g:notmuch_folders + if !exists('g:notmuch_folders') + if exists('g:notmuch_rb_folders') + let g:notmuch_folders = g:notmuch_rb_folders else - let g:notmuch_rb_folders = s:notmuch_rb_folders_default + let g:notmuch_folders = s:notmuch_folders_default endif endif endfunction @@ -578,10 +616,32 @@ ruby << EOF open_compose_helper(lines, cur) end + def open_compose() + lines = [] + + lines << "Date: #{Time.now().strftime('%a, %-d %b %Y %T %z')}" + lines << "From: #{$email}" + lines << "To: " + cur = lines.count + + lines << "Cc: " + lines << "Bcc: " + lines << "Message-Id: #{generate_message_id}" + lines << "Subject: " + lines << "Mime-Version: 1.0" + lines << "Content-Type: text/plain; charset=utf-8" + lines << "Content-Transfer-Encoding: 7bit" + lines << "" + lines << "" + lines << "" + + open_compose_helper(lines, cur) + end + def folders_render() $curbuf.render do |b| - folders = VIM::evaluate('g:notmuch_rb_folders') - count_threads = VIM::evaluate('g:notmuch_rb_folders_count_threads') + folders = VIM::evaluate('g:notmuch_folders') + count_threads = VIM::evaluate('g:notmuch_folders_count_threads') $searches.clear folders.each do |name, search| q = $curbuf.query(search) @@ -593,7 +653,7 @@ ruby << EOF end def search_render(search) - date_fmt = VIM::evaluate('g:notmuch_rb_date_format') + date_fmt = VIM::evaluate('g:notmuch_date_format') q = $curbuf.query(search) q.sort = Notmuch::SORT_NEWEST_FIRST $threads.clear