X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=968c4c1652b5d3ebab46d3e1759fc4ef40aacf4c;hb=5a8903f05a10a9d010ca4d7302a58cd6520a112d;hp=b8c985812a9e39a34083a68800bf2ff143275337;hpb=75633b32209c20f35cb5aa5a19d233450c5b115c;p=notmuch diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index b8c98581..968c4c16 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -118,6 +118,7 @@ let g:notmuch_search_maps = { \ '': ':call NM_search_show_thread(1)', \ '': ':call NM_search_expand('''')', \ 'a': ':call NM_search_archive_thread()', + \ 'A': ':call NM_search_mark_read_then_archive_thread()', \ 'f': ':call NM_search_filter()', \ 'm': ':call NM_new_mail()', \ 'o': ':call NM_search_toggle_order()', @@ -306,11 +307,15 @@ function! s:NM_search_edit() endfunction function! s:NM_search_archive_thread() - call NM_add_remove_tags_on_screen('', '-', ['inbox']) call NM_add_remove_tags([], '-', ['inbox']) norm j endfunction +function! s:NM_search_mark_read_then_archive_thread() + call NM_add_remove_tags([], '-', ['unread', 'inbox']) + norm j +endfunction + function! s:NM_search_filter() call NM_search_filter_helper('Filter: ', '', '') endfunction @@ -399,7 +404,6 @@ function! s:NM_search_add_remove_tags(prompt, prefix, intags) let tags = a:intags endif call NM_add_remove_tags([], a:prefix, tags) - call NM_add_remove_tags_on_screen('', a:prefix, tags) endfunction " --- implement show screen {{{1 @@ -569,7 +573,6 @@ function! s:NM_show_advance_marking_read_and_archiving() " if entire message fits on the screen, read/archive it, move to the next one if msg_top['id'] != msg_bot['id'] || msg_top['end'] <= vis_bot - call NM_add_remove_tags_on_screen(msg_top['start'], '-', advance_tags) exec printf('norm %dG', vis_top) call NM_show_next(0, 1) if has_key(msg_top,'match') && msg_top['match'] != '0' @@ -1325,20 +1328,6 @@ function! s:NM_add_remove_tags(filter, prefix, tags) call NM_run(args) endfunction -function! s:NM_add_remove_tags_on_screen(online, prefix, tags) - setlocal modifiable - if a:prefix == '-' - for tagname in a:tags - exec printf('silent! %ss/(\([^)]*\)\<%s\>\([^)]*\))$/(\1\2)/', string(a:online), tagname) - endfor - else - for tagname in a:tags - exec printf('silent! %ss/(\([^)]*\))$/(\1 %s)/', string(a:online), tagname) - endfor - endif - setlocal nomodifiable -endfunction - " --- process and set the defaults {{{1 function! NM_set_defaults(force)