diff options
author | Bart Trojanowski <bart@jukie.net> | 2009-11-20 01:35:33 -0500 |
---|---|---|
committer | Bart Trojanowski <bart@jukie.net> | 2009-11-25 00:48:50 -0500 |
commit | 3dc96c6dc8885448b48c6a6a557df5a266f40f04 (patch) | |
tree | df6e4e766ee4e3dcb1da4ac3907d103792767b79 /vim | |
parent | 010eac8b434eee317b0d28eac9bcf544fc6994d1 (diff) |
added ^n to handle walking messages
Diffstat (limited to 'vim')
-rw-r--r-- | vim/README | 1 | ||||
-rw-r--r-- | vim/plugin/notmuch.vim | 24 |
2 files changed, 23 insertions, 2 deletions
@@ -25,4 +25,5 @@ Buffer types: Keybindings: q - return to search display + ^n - next message 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 <buffer> q :b %d<CR>", bufnr) + exec printf("nnoremap <buffer> q :b %d<CR>", b:nm_prev_bufnr) + nnoremap <buffer> <C-N> :call <SID>NM_cmd_show_next()<CR> +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 <SID>NM_search_display() endfunction " s:NM_cmd_show_parse returns the following dictionary: |