aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Bart Trojanowski <bart@jukie.net>2009-11-20 01:57:57 -0500
committerGravatar Bart Trojanowski <bart@jukie.net>2009-11-25 00:48:50 -0500
commit5a2d760067559b3fabf8718d189e815e7e6402da (patch)
tree3a832918ec330e10be84ca629bcd4db6cff9e884
parent1e0005e6d0740e3af6b247a4cf7c7a42a461f4b0 (diff)
toggle signatures and citations with s/c respectively
-rw-r--r--vim/README2
-rw-r--r--vim/plugin/notmuch.vim25
2 files changed, 23 insertions, 4 deletions
diff --git a/vim/README b/vim/README
index 1ed2c424..e4128b71 100644
--- a/vim/README
+++ b/vim/README
@@ -26,4 +26,6 @@ Buffer types:
Keybindings:
q - return to search display
^n - next message
+ s - toggle folding of signatures on and off
+ c - toggle folding of citations on and off
diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim
index 3b16a995..968b9aa6 100644
--- a/vim/plugin/notmuch.vim
+++ b/vim/plugin/notmuch.vim
@@ -53,8 +53,8 @@ let s:notmuch_show_citation_regexp = '^\s*>'
let s:notmuch_show_headers = [ 'Subject', 'From' ]
-let s:notmuch_show_fold_signatures = 1
-let s:notmuch_show_fold_citations = 1
+let g:notmuch_show_fold_signatures = 1
+let g:notmuch_show_fold_citations = 1
" --- implement search screen
@@ -113,6 +113,8 @@ function! s:NM_cmd_show(words)
exec printf("nnoremap <buffer> q :b %d<CR>", b:nm_prev_bufnr)
nnoremap <buffer> <C-N> :call <SID>NM_cmd_show_next()<CR>
+ nnoremap <buffer> c :call <SID>NM_cmd_show_fold_toggle('c', 'cit', !g:notmuch_show_fold_citations)<CR>
+ nnoremap <buffer> s :call <SID>NM_cmd_show_fold_toggle('s', 'sig', !g:notmuch_show_fold_signatures)<CR>
endfunction
function! s:NM_cmd_show_next()
@@ -133,6 +135,21 @@ function! s:NM_cmd_show_next()
call <SID>NM_search_display()
endfunction
+function! s:NM_cmd_show_fold_toggle(key, type, fold)
+ let info = b:nm_raw_info
+ let act = 'open'
+ if a:fold
+ let act = 'close'
+ endif
+ for fld in info['folds']
+ if fld[0] == a:type
+ exec printf('%dfold%s', fld[1], act)
+ endif
+ endfor
+ exec printf('nnoremap <buffer> %s :call <SID>NM_cmd_show_fold_toggle(''%s'', ''%s'', %d)<CR>', a:key, a:key, a:type, !a:fold)
+endfunction
+
+
" s:NM_cmd_show_parse returns the following dictionary:
" 'disp': lines to display
" 'msgs': message info dicts { start, end, id, depth, filename, descr, header }
@@ -312,8 +329,8 @@ function! s:NM_cmd_show_mkfolds()
for afold in info['folds']
exec printf('%d,%dfold', afold[1], afold[2])
- if (afold[0] == 'sig' && s:notmuch_show_fold_signatures)
- \ || (afold[0] == 'cit' && s:notmuch_show_fold_citations)
+ if (afold[0] == 'sig' && g:notmuch_show_fold_signatures)
+ \ || (afold[0] == 'cit' && g:notmuch_show_fold_citations)
exec printf('%dfoldclose', afold[1])
else
exec printf('%dfoldopen', afold[1])