X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=3b16a995acee7221fc175c232a362a58d2b596e2;hp=6e1f8b14a8ed7a8f1b25df1c5d52db3aef7810a7;hb=1e0005e6d0740e3af6b247a4cf7c7a42a461f4b0;hpb=010eac8b434eee317b0d28eac9bcf544fc6994d1 diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index 6e1f8b14..3b16a995 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: @@ -162,7 +182,7 @@ function! s:NM_cmd_show_parse(inlines) endif elseif mode_type == 'cit' if part_end || match(line, s:notmuch_show_citation_regexp) == -1 - let outlnum = len(info['disp']) -1 + let outlnum = len(info['disp']) let foldinfo = [ mode_type, mode_start, outlnum, \ printf('[ %d-line citation. Press "c" to show. ]', outlnum - mode_start) ] let mode_type = ''