X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=5fe438e78cf1eece676d160201c473738b2e9c2a;hp=2b92ad688dfbc5a3ba37c22d8107a9e35984e774;hb=71bdd859dc6f80a918412396cb66c219e0e60669;hpb=c80ab27d08540d3f434629f62bdf2f6a13a1cf41 diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index 2b92ad68..5fe438e7 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -51,6 +51,8 @@ let s:notmuch_show_tags_regexp = '(\([^)]*\))$' let s:notmuch_show_signature_regexp = '^\(-- \?\|_\+\)$' let s:notmuch_show_signature_lines_max = 12 +let s:notmuch_show_citation_regexp = '^\s*>' + " --- implement search screen function! s:NM_cmd_search(words) @@ -96,9 +98,43 @@ function! s:NM_cmd_show(words) setlocal bufhidden=delete let b:nm_raw_data = data + call s:NM_cmd_show_mkfolds() + exec printf("nnoremap q :b %d", bufnr) endfunction +function! s:NM_cmd_show_mkfolds() + let modetype = '' + let modeline = -1 + let lnum = 1 + while lnum <= line('$') + let line = getline(lnum) + if modetype == '' + if match(line, s:notmuch_show_signature_regexp) != -1 + let modetype = 'sig' + let modeline = lnum + elseif match(line, s:notmuch_show_citation_regexp) != -1 + let modetype = 'cit' + let modeline = lnum + endif + elseif modetype == 'cit' + if match(line, s:notmuch_show_citation_regexp) == -1 + exec printf('%d,%dfold', modeline, lnum) + let modetype = '' + endif + elseif modetype == 'sig' + if (lnum - modeline) > s:notmuch_show_signature_lines_max + let modetype = '' + elseif match(line, s:notmuch_show_part_end_regexp) != -1 + exec printf('%d,%dfold', modeline, lnum) + let modetype = '' + endif + endif + + let lnum = lnum + 1 + endwhile +endfunction + " --- helper functions