Ian Main wrote: > This patch adds a few changes to moving between threads: > > - It supports 'scrolloff' so that if you have this set it will move the > buffer and cursor so the next/prev email starts at the top of the > screen. > - It adds the ability to use shift-tab to go to the previous msg in > the thread. > > Ian > --- > vim/notmuch.vim | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/vim/notmuch.vim b/vim/notmuch.vim > index 331e930..95e5c4b 100644 > --- a/vim/notmuch.vim > +++ b/vim/notmuch.vim > @@ -39,6 +39,7 @@ let g:notmuch_show_maps = { > \ 'p': 'show_save_patches()', > \ 'r': 'show_reply()', > \ '?': 'show_info()', > + \ '<S-Tab>': 'show_prev_msg()', > \ '<Tab>': 'show_next_msg()', > \ 'c': 'compose()', > \ } > @@ -113,6 +114,23 @@ EOF > call s:kill_this_buffer() > endfunction > > +function! s:show_prev_msg() > +ruby << EOF > + r, c = $curwin.cursor > + n = $curbuf.line_number > + i = $messages.index { |m| n >= m.start && n <= m.end } > + m = $messages[i - 1] if i > 0 > + vim_puts ("messages index is #{i} and m is #{m}") > + if m > + r = m.body_start + 1 > + scrolloff = VIM::evaluate("&scrolloff") > + VIM::command("normal #{m.start + scrolloff}zt") > + $curwin.cursor = r + scrolloff, c > + vim_puts("moving to #{m.start + scrolloff}") Woops, forgot to remove the vim_puts debugging. Ian