X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=63095ed55592842fe47e44ce49228a88f035e0f9;hp=d3e313533060fca8728d899083a7ed7d0fc046b9;hb=651b215f0f6d4f220ff67941dbecd54692382472;hpb=b078a0c8c2ce72e1273bed87627e25dcd833a967 diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index d3e31353..63095ed5 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -53,6 +53,8 @@ let s:notmuch_defaults = { \ \ 'g:notmuch_show_citation_regexp': '^\s*>' , \ + \ 'g:notmuch_compose_insert_mode_start': 1 , + \ 'g:notmuch_compose_header_help': 1 , \ 'g:notmuch_compose_temp_file_dir': '~/.notmuch/compose/' , \ } @@ -161,6 +163,7 @@ let g:notmuch_show_maps = { " --- --- bindings for compose screen {{{2 let g:notmuch_compose_nmaps = { \ ',s': ':call NM_compose_send()', + \ ',a': ':call NM_compose_attach()', \ ',q': ':call NM_kill_this_buffer()', \ '': ':call NM_compose_next_entry_area()', \ } @@ -185,7 +188,7 @@ function! s:NM_cmd_folders(words) call add(searches, search) endfor - call NM_newBuffer('folders', join(disp, "\n")) + call NM_newBuffer('', 'folders', join(disp, "\n")) let b:nm_searches = searches let b:nm_timestamp = reltime() @@ -233,7 +236,7 @@ function! s:NM_cmd_search(words) let disp = copy(lines) call map(disp, 's:NM_cmd_search_fmtline(v:val)') - call NM_newBuffer('search', join(disp, "\n")) + call NM_newBuffer('', 'search', join(disp, "\n")) let b:nm_raw_lines = lines let b:nm_search_words = a:words @@ -378,8 +381,7 @@ endfunction function! s:NM_search_thread_id() if !exists('b:nm_raw_lines') - echoe 'no b:nm_raw_lines' - return '' + throw 'Eeek! no b:nm_raw_lines' endif let mnum = line('.') - 1 if len(b:nm_raw_lines) <= mnum @@ -416,7 +418,7 @@ function! s:NM_cmd_show(words) let info = s:NM_cmd_show_parse(lines) setlocal bufhidden=hide - call NM_newBuffer('show', join(info['disp'], "\n")) + call NM_newBuffer('', 'show', join(info['disp'], "\n")) setlocal bufhidden=delete let b:nm_words = a:words let b:nm_raw_info = info @@ -618,8 +620,7 @@ endfunction function! s:NM_show_message_id() if !exists('b:nm_raw_info') - echoe 'no b:nm_raw_info' - return '' + throw 'Eeek! no b:nm_raw_info' endif let msg = NM_show_get_message_for_line(line('.')) if has_key(msg,'id') @@ -630,8 +631,7 @@ endfunction function! s:NM_show_search_words() if !exists('b:nm_words') - echoe 'no b:nm_words' - return [] + throw 'Eeek! no b:nm_words' endif return b:nm_words endfunction @@ -875,12 +875,18 @@ endfunction " --- implement compose screen {{{1 function! s:NM_cmd_compose(words, body_lines) - let lines = [] + let lines = !g:notmuch_compose_header_help ? [] : [ + \ 'Notmuch-Help: Type in your message here; to help you use these bindings:', + \ 'Notmuch-Help: ,a - attach a file', + \ 'Notmuch-Help: ,s - send the message (Notmuch-Help lines will be removed)', + \ 'Notmuch-Help: ,q - abort the message', + \ 'Notmuch-Help: - skip through header lines', + \ ] let start_on_line = 0 let hdrs = { } for word in a:words - let m = matchlist(word, '^\([^:]\+\):\s*\(.*\)\s*$') + let m = matchlist(word, '^\(\w[^:]*\):\s*\(.*\)\s*$') if !len(m) throw 'Eeek! bad parameter ''' . string(word) . '''' endif @@ -931,22 +937,24 @@ function! s:NM_cmd_compose(words, body_lines) \ 'compose', lines) setlocal bufhidden=hide - call NM_cmd_compose_mksyntax() call NM_set_map('n', g:notmuch_compose_nmaps) call NM_set_map('i', g:notmuch_compose_imaps) - exec printf('norm %dG', start_on_line) - startinsert! + call cursor(start_on_line, strlen(start_on_line) + 1) + if g:notmuch_compose_insert_mode_start + startinsert! + endif echo 'Type your message, use to jump to next header and then body.' endfunction -function! s:NM_cmd_compose_mksyntax() - silent! setlocal syntax=mail -endfunction function! s:NM_compose_send() echo 'not implemented' endfunction +function! s:NM_compose_attach() + echo 'not implemented' +endfunction + function! s:NM_compose_next_entry_area() let lnum = line('.') let hdr_end = NM_compose_find_line_match(1,'^$',1) @@ -968,7 +976,6 @@ function! s:NM_compose_next_entry_area() call cursor(lnum+1, strlen(getline(lnum+1)) + 1) return '' endif - echo 'mode=' . mode() if mode() == 'i' if !getbufvar(bufnr('.'), '&et') return "\t" @@ -1006,8 +1013,12 @@ endfunction " --- notmuch helper functions {{{1 -function! s:NM_newBuffer(type, content) - enew +function! s:NM_newBuffer(how, type, content) + if strlen(a:how) + exec a:how + else + enew + endif setlocal buftype=nofile readonly modifiable scrolloff=0 sidescrolloff=0 silent put=a:content keepjumps 0d