X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=27fa684d1cbf8bbcbb85c34059bceb709ad27a78;hp=b9fc8d220288d7968bd2385c39fb32942a200e00;hb=b0a00164169dba02f5cc9180a54f370d2c4d4b07;hpb=fe2a905110a9527e77e9c40ba8dd9aab369af6b9 diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index b9fc8d22..27fa684d 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -48,50 +48,28 @@ let s:notmuch_defaults = { \ 'g:notmuch_show_citation_regexp': '^\s*>' , \ } -" for some reason NM_set_defaults() didn't work for arrays... -if !exists('g:notmuch_show_headers') - let g:notmuch_show_headers = [ 'Subject', 'From' ] -endif +" defaults for g:notmuch_show_headers +" override with: let g:notmuch_show_headers = [ ... ] +let s:notmuch_show_headers_defaults = [ + \ 'Subject', + \ 'From' + \ ] " --- keyboard mapping definitions {{{1 +" --- --- bindings for search screen {{{2 let g:notmuch_search_maps = { - \ '': ':call NM_search_display()', - \ 's': ':call NM_cmd_search(split(input(''NotMuch Search:'')))', + \ '': ':call NM_search_display()', + \ 's': ':call NM_cmd_search(split(input(''NotMuch Search:'')))', \ } -" --- process and set the defaults {{{1 - -function! NM_set_defaults(force) - for [key, dflt] in items(s:notmuch_defaults) - let cmd = '' - if !a:force && exists(key) && type(dflt) == type(eval(key)) - continue - elseif type(dflt) == type(0) - let cmd = printf('let %s = %d', key, dflt) - elseif type(dflt) == type('') - let cmd = printf('let %s = ''%s''', key, dflt) - "elseif type(dflt) == type([]) - " let cmd = printf('let %s = %s', key, string(dflt)) - else - echoe printf('E: Unknown type in NM_set_defaults(%d) using [%s,%s]', - \ a:force, key, string(dflt)) - continue - endif - echoe cmd - exec cmd - endfor -endfunction -call NM_set_defaults(0) - -" --- assign keymaps {{{1 - -function! s:NM_set_map(maps) - for [key, code] in items(a:maps) - exec printf('nnoremap %s %s', key, code) - endfor -endfunction - +" --- --- bindings for show screen {{{2 +let g:notmuch_show_maps = { + \ 'q': ':call NM_cmd_show_quit()', + \ '': ':call NM_cmd_show_next()', + \ 'c': ':call NM_cmd_show_fold_toggle(''c'', ''cit'', !g:notmuch_show_fold_citations)', + \ 's': ':call NM_cmd_show_fold_toggle(''s'', ''sig'', !g:notmuch_show_fold_signatures)', + \ } " --- implement search screen {{{1 @@ -143,14 +121,15 @@ function! s:NM_cmd_show(words) call s:NM_cmd_show_mkfolds() call s:NM_cmd_show_mksyntax() + call NM_set_map(g:notmuch_show_maps) setlocal foldtext=NM_cmd_show_foldtext() setlocal fillchars= setlocal foldcolumn=6 - 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_quit() + exec printf(":buffer %d", b:nm_prev_bufnr) endfunction function! s:NM_cmd_show_next() @@ -395,7 +374,7 @@ function! NM_cmd_show_foldtext() endfunction -" --- helper functions {{{1 +" --- notmuch helper functions {{{1 function! s:NM_newBuffer(ft, content) enew @@ -420,6 +399,41 @@ function! s:NM_run(args) endif endfunction +" --- process and set the defaults {{{1 + +function! NM_set_defaults(force) + for [key, dflt] in items(s:notmuch_defaults) + let cmd = '' + if !a:force && exists(key) && type(dflt) == type(eval(key)) + continue + elseif type(dflt) == type(0) + let cmd = printf('let %s = %d', key, dflt) + elseif type(dflt) == type('') + let cmd = printf('let %s = ''%s''', key, dflt) + "elseif type(dflt) == type([]) + " let cmd = printf('let %s = %s', key, string(dflt)) + else + echoe printf('E: Unknown type in NM_set_defaults(%d) using [%s,%s]', + \ a:force, key, string(dflt)) + continue + endif + exec cmd + endfor +endfunction +call NM_set_defaults(0) + +" for some reason NM_set_defaults() didn't work for arrays... +if !exists('g:notmuch_show_headers') + let g:notmuch_show_headers = s:notmuch_show_headers_defaults +endif + +" --- assign keymaps {{{1 + +function! s:NM_set_map(maps) + for [key, code] in items(a:maps) + exec printf('nnoremap %s %s', key, code) + endfor +endfunction " --- command handler {{{1