X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;ds=sidebyside;f=vim%2Fplugin%2Fnotmuch.vim;h=94eb0bbab2b9ea76e06d21022ee4d75ab52704c4;hb=3dc96c6dc8885448b48c6a6a557df5a266f40f04;hp=6e1f8b14a8ed7a8f1b25df1c5d52db3aef7810a7;hpb=010eac8b434eee317b0d28eac9bcf544fc6994d1;p=notmuch diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index 6e1f8b14..94eb0bba 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -94,7 +94,7 @@ endfunction " --- implement show screen function! s:NM_cmd_show(words) - let bufnr = bufnr('%') + let prev_bufnr = bufnr('%') let data = s:NM_run(['show'] + a:words) let lines = split(data, "\n") @@ -103,6 +103,7 @@ function! s:NM_cmd_show(words) call s:NM_newBuffer('show', join(info['disp'], "\n")) setlocal bufhidden=delete let b:nm_raw_info = info + let b:nm_prev_bufnr = prev_bufnr call s:NM_cmd_show_mkfolds() call s:NM_cmd_show_mksyntax() @@ -110,7 +111,26 @@ function! s:NM_cmd_show(words) setlocal fillchars= setlocal foldcolumn=6 - exec printf("nnoremap q :b %d", bufnr) + exec printf("nnoremap q :b %d", b:nm_prev_bufnr) + nnoremap :call NM_cmd_show_next() +endfunction + +function! s:NM_cmd_show_next() + let info = b:nm_raw_info + let lnum = line('.') + let cnt = 0 + for msg in info['msgs'] + let cnt = cnt + 1 + if lnum >= msg['start'] + continue + endif + + exec printf('norm %dG', msg['start']) + norm zz + return + endfor + norm qj + call NM_search_display() endfunction " s:NM_cmd_show_parse returns the following dictionary: