X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=968b9aa61fd68330fb78ff54113bfb1de78fcf67;hp=94eb0bbab2b9ea76e06d21022ee4d75ab52704c4;hb=5a2d760067559b3fabf8718d189e815e7e6402da;hpb=3dc96c6dc8885448b48c6a6a557df5a266f40f04 diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index 94eb0bba..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 q :b %d", b:nm_prev_bufnr) nnoremap :call NM_cmd_show_next() + nnoremap c :call NM_cmd_show_fold_toggle('c', 'cit', !g:notmuch_show_fold_citations) + nnoremap s :call NM_cmd_show_fold_toggle('s', 'sig', !g:notmuch_show_fold_signatures) endfunction function! s:NM_cmd_show_next() @@ -133,6 +135,21 @@ function! s:NM_cmd_show_next() call 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 %s :call NM_cmd_show_fold_toggle(''%s'', ''%s'', %d)', 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 } @@ -182,7 +199,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 = '' @@ -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])