aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim
diff options
context:
space:
mode:
authorGravatar Bart Trojanowski <bart@jukie.net>2009-11-20 01:35:33 -0500
committerGravatar Bart Trojanowski <bart@jukie.net>2009-11-25 00:48:50 -0500
commit3dc96c6dc8885448b48c6a6a557df5a266f40f04 (patch)
treedf6e4e766ee4e3dcb1da4ac3907d103792767b79 /vim
parent010eac8b434eee317b0d28eac9bcf544fc6994d1 (diff)
added ^n to handle walking messages
Diffstat (limited to 'vim')
-rw-r--r--vim/README1
-rw-r--r--vim/plugin/notmuch.vim24
2 files changed, 23 insertions, 2 deletions
diff --git a/vim/README b/vim/README
index c55875b1..1ed2c424 100644
--- a/vim/README
+++ b/vim/README
@@ -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: