X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=0addd76aca9bd1f9716fb52daf7cfa8e86988836;hp=aece360b663f8b95660a217e2a6101211da37b02;hb=6bc0ec618d55aed84b1b0a810c0f1ac877a4e430;hpb=54a7df40a25ff7584e981ac35d121ac89cfa637e diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index aece360b..0addd76a 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -242,13 +242,13 @@ function! s:NM_search_prompt() else let tags = s:notmuch_initial_search_words_defaults endif + let prev_bufnr = bufnr('%') if b:nm_type == 'search' " TODO: we intend to replace the current buffer, " ... maybe we could just clear it let prev_bufnr = b:nm_prev_bufnr setlocal bufhidden=delete else - let prev_bufnr = bufnr('%') setlocal bufhidden=hide endif call NM_cmd_search(tags) @@ -271,14 +271,14 @@ function! s:NM_search_archive_thread() endfunction function! s:NM_search_filter() - call NM_search_filter_helper('Filter: ', '') + call NM_search_filter_helper('Filter: ', '', '') endfunction function! s:NM_search_filter_by_tag() - call NM_search_filter_helper('Filter Tag(s): ', 'tag:') + call NM_search_filter_helper('Filter Tag(s): ', 'tag:', 'and') endfunction -function! s:NM_search_filter_helper(prompt, prefix) +function! s:NM_search_filter_helper(prompt, prefix, joiner) " TODO: input() can support completion let text = input(a:prompt) if !strlen(text) @@ -286,9 +286,17 @@ function! s:NM_search_filter_helper(prompt, prefix) endif let tags = split(text) - map(tags, 'and a:prefix . v:val') - let tags = b:nm_search_words + tags - echo tags + if strlen(a:prefix) + call map(tags, 'a:prefix . v:val') + endif + if strlen(a:joiner) + let idx = len(tags) - 1 + while idx > 0 + call insert(tags, a:joiner, idx) + let idx = idx - 1 + endwhile + endif + let tags = b:nm_search_words + ['and', '''('] + tags + [')'''] let prev_bufnr = bufnr('%') setlocal bufhidden=hide @@ -318,8 +326,10 @@ endfunction function! s:NM_search_refresh_view() let lno = line('.') + let prev_bufnr = b:nm_prev_bufnr setlocal bufhidden=delete call NM_cmd_search(b:nm_search_words) + let b:nm_prev_bufnr = prev_bufnr " FIXME: should find the line of the thread we were on if possible exec printf('norm %dG', lno) endfunction @@ -780,7 +790,7 @@ function! s:NM_kill_this_buffer() setlocal bufhidden=delete exec printf(":buffer %d", b:nm_prev_bufnr) else - echo "Nothing to kill." + echo "This is the last buffer; use :q to quit." endif endfunction