]> git.notmuchmail.org Git - notmuch/blobdiff - vim/plugin/notmuch.vim
vim: allow overriding how newBuffer is created
[notmuch] / vim / plugin / notmuch.vim
index 341f3370dad8d821062a0bb3aa87c50b17cbaf50..0adca0b0c574922ec78a90a1e14a74d4a8b9105b 100644 (file)
@@ -53,6 +53,7 @@ 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/'        ,
         \ }
@@ -187,7 +188,7 @@ function! s:NM_cmd_folders(words)
                 call add(searches, search)
         endfor
 
-        call <SID>NM_newBuffer('folders', join(disp, "\n"))
+        call <SID>NM_newBuffer('', 'folders', join(disp, "\n"))
         let b:nm_searches = searches
         let b:nm_timestamp = reltime()
 
@@ -235,7 +236,7 @@ function! s:NM_cmd_search(words)
         let disp = copy(lines)
         call map(disp, 's:NM_cmd_search_fmtline(v:val)')
 
-        call <SID>NM_newBuffer('search', join(disp, "\n"))
+        call <SID>NM_newBuffer('', 'search', join(disp, "\n"))
         let b:nm_raw_lines = lines
         let b:nm_search_words = a:words
 
@@ -380,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
@@ -418,7 +418,7 @@ function! s:NM_cmd_show(words)
         let info = s:NM_cmd_show_parse(lines)
 
         setlocal bufhidden=hide
-        call <SID>NM_newBuffer('show', join(info['disp'], "\n"))
+        call <SID>NM_newBuffer('', 'show', join(info['disp'], "\n"))
         setlocal bufhidden=delete
         let b:nm_words = a:words
         let b:nm_raw_info = info
@@ -620,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 = <SID>NM_show_get_message_for_line(line('.'))
         if has_key(msg,'id')
@@ -632,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
@@ -943,7 +941,9 @@ function! s:NM_cmd_compose(words, body_lines)
         call <SID>NM_set_map('i', g:notmuch_compose_imaps)
 
         call cursor(start_on_line, strlen(start_on_line) + 1)
-        startinsert!
+        if g:notmuch_compose_insert_mode_start
+                startinsert!
+        endif
         echo 'Type your message, use <TAB> to jump to next header and then body.'
 endfunction
 
@@ -976,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"
@@ -1014,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