]> git.notmuchmail.org Git - notmuch/blobdiff - vim/plugin/notmuch.vim
Fix typo in message
[notmuch] / vim / plugin / notmuch.vim
index a4d04e26104ee4da4358cc06bea8e35689c52752..a9754f2b4b2e94de332931806260323ff674bfaa 100644 (file)
@@ -105,6 +105,7 @@ let s:notmuch_compose_headers_defaults = [
 " --- --- bindings for folders mode {{{2
 
 let g:notmuch_folders_maps = {
+        \ 'm':          ':call <SID>NM_new_mail()<CR>',
         \ 's':          ':call <SID>NM_search_prompt()<CR>',
         \ 'q':          ':call <SID>NM_kill_this_buffer()<CR>',
         \ '=':          ':call <SID>NM_folders_refresh_view()<CR>',
@@ -113,7 +114,8 @@ let g:notmuch_folders_maps = {
 
 " --- --- bindings for search screen {{{2
 let g:notmuch_search_maps = {
-        \ '<Enter>':    ':call <SID>NM_search_show_thread()<CR>',
+        \ '<Space>':    ':call <SID>NM_search_show_thread(0)<CR>',
+        \ '<Enter>':    ':call <SID>NM_search_show_thread(1)<CR>',
         \ '<C-]>':      ':call <SID>NM_search_expand(''<cword>'')<CR>',
         \ 'a':          ':call <SID>NM_search_archive_thread()<CR>',
         \ 'f':          ':call <SID>NM_search_filter()<CR>',
@@ -136,11 +138,12 @@ let g:notmuch_show_maps = {
         \ '<C-N>':      ':call <SID>NM_show_next(1, 0)<CR>',
         \ '<C-]>':      ':call <SID>NM_search_expand(''<cword>'')<CR>',
         \ 'q':          ':call <SID>NM_kill_this_buffer()<CR>',
+        \ 's':          ':call <SID>NM_search_prompt()<CR>',
         \
         \ 'b':          ':call <SID>NM_show_fold_toggle(''b'', ''bdy'', !g:notmuch_show_fold_bodies)<CR>',
         \ 'c':          ':call <SID>NM_show_fold_toggle(''c'', ''cit'', !g:notmuch_show_fold_citations)<CR>',
         \ 'h':          ':call <SID>NM_show_fold_toggle(''h'', ''hdr'', !g:notmuch_show_fold_headers)<CR>',
-        \ 's':          ':call <SID>NM_show_fold_toggle(''s'', ''sig'', !g:notmuch_show_fold_signatures)<CR>',
+        \ 'i':          ':call <SID>NM_show_fold_toggle(''s'', ''sig'', !g:notmuch_show_fold_signatures)<CR>',
         \
         \ 'a':          ':call <SID>NM_show_archive_thread()<CR>',
         \ 'A':          ':call <SID>NM_show_mark_read_then_archive_thread()<CR>',
@@ -175,7 +178,7 @@ let g:notmuch_compose_imaps = {
 
 function! s:NM_cmd_folders(words)
         if len(a:words)
-                throw 'Not exapecting any arguments for folders command.'
+                throw 'Not expecting any arguments for folders command.'
         endif
         let cmd = ['count']
         let disp = []
@@ -264,17 +267,15 @@ endfunction
 
 " --- --- search screen action functions {{{2
 
-function! s:NM_search_show_thread()
-        let id = <SID>NM_search_thread_id()
-        if id != ''
-                let words = [id]
-                if exists('b:nm_search_words')
-                        let words = ['('] + b:nm_search_words + [')', 'AND', id]
-                endif
-                if len(words)
-                        call <SID>NM_cmd_show(words)
-                endif
+function! s:NM_search_show_thread(everything)
+        let words = [ <SID>NM_search_thread_id() ]
+        if !a:everything && exists('b:nm_search_words')
+                call extend(words, ['AND', '('])
+                call extend(words, b:nm_search_words)
+                call add(words, ')')
         endif
+        call <SID>NM_cmd_show(words)
+        let b:nm_show_everything = a:everything
 endfunction
 
 function! s:NM_search_prompt()
@@ -346,7 +347,14 @@ function! s:NM_search_toggle_order()
 endfunction
 
 function! s:NM_search_reply_to_thread()
-        echo 'not implemented'
+        let cmd = ['reply']
+        call add(cmd, <SID>NM_search_thread_id())
+        call add(cmd, 'AND')
+        call extend(cmd, <SID>NM_get_search_words())
+
+        let data = <SID>NM_run(cmd)
+        let lines = split(data, "\n")
+        call <SID>NM_newComposeBuffer(lines, 0)
 endfunction
 
 function! s:NM_search_add_tags(tags)
@@ -401,7 +409,7 @@ endfunction
 
 function! s:NM_cmd_show(words)
         let prev_bufnr = bufnr('%')
-        let data = s:NM_run(['show'] + a:words)
+        let data = s:NM_run(['show', '--entire-thread'] + a:words)
         let lines = split(data, "\n")
 
         let info = s:NM_cmd_show_parse(lines)
@@ -423,6 +431,7 @@ function! s:NM_cmd_show(words)
 endfunction
 
 function! s:NM_show_previous(can_change_thread, find_matching)
+        let everything = exists('b:nm_show_everything') ? b:nm_show_everything : 0
         let info = b:nm_raw_info
         let lnum = line('.')
         for msg in reverse(copy(info['msgs']))
@@ -443,7 +452,7 @@ function! s:NM_show_previous(can_change_thread, find_matching)
         call <SID>NM_kill_this_buffer()
         if line('.') > 1
                 norm k
-                call <SID>NM_search_show_thread()
+                call <SID>NM_search_show_thread(everything)
                 norm G
                 call <SID>NM_show_previous(0, a:find_matching)
         else
@@ -472,10 +481,11 @@ function! s:NM_show_next(can_change_thread, find_matching)
 endfunction
 
 function! s:NM_show_next_thread()
+        let everything = exists('b:nm_show_everything') ? b:nm_show_everything : 0
         call <SID>NM_kill_this_buffer()
         if line('.') != line('$')
                 norm j
-                call <SID>NM_search_show_thread()
+                call <SID>NM_search_show_thread(everything)
         else
                 echo 'No more messages.'
         endif
@@ -498,7 +508,14 @@ function! s:NM_show_previous_message()
 endfunction
 
 function! s:NM_show_reply()
-        echo 'not implemented'
+        let cmd = ['reply']
+        call add(cmd, <SID>NM_show_message_id())
+        call add(cmd, 'AND')
+        call extend(cmd, <SID>NM_get_search_words())
+
+        let data = <SID>NM_run(cmd)
+        let lines = split(data, "\n")
+        call <SID>NM_newComposeBuffer(lines, 0)
 endfunction
 
 function! s:NM_show_view_all_mime_parts()
@@ -624,9 +641,19 @@ function! s:NM_show_fold_toggle(key, type, fold)
                 let act = 'close'
         endif
         for fld in info['folds']
-                if fld[0] == a:type
-                        exec printf('%dfold%s', fld[1], act)
+                if fld[0] != a:type
+                        continue
+                endif
+                "let idx = fld[3]
+                "let msg = info['msgs'][idx]
+                "if has_key(msg,'match') && msg['match'] == '0'
+                "        continue
+                "endif
+                let cls = foldclosed(fld[1])
+                if cls != -1 && cls != fld[1]
+                        continue
                 endif
+                exec printf('%dfold%s', fld[1], act)
         endfor
         exec printf('nnoremap <buffer> %s :call <SID>NM_show_fold_toggle(''%s'', ''%s'', %d)<CR>', a:key, a:key, a:type, !a:fold)
 endfunction
@@ -939,8 +966,6 @@ function! s:NM_compose_send()
                 let line = getline(lnum)
         endwhile
         let body_starts = lnum
-        exec printf('0,%dd', body_starts)
-        write
 
         "[-a header] [-b bcc-addr] [-c cc-addr] [-s subject] to-addr
         let cmd = ['mail']
@@ -972,6 +997,12 @@ function! s:NM_compose_send()
         endfor
         call extend(cmd, tos)
 
+        " TODO: make sure we have at least one target
+        " TODO: ask about empty jubject, etc
+
+        exec printf('0,%dd', body_starts)
+        write
+
         call map(cmd, 's:NM_shell_escape(v:val)')
         let cmdtxt = join(cmd) . '< ' . fname
         let out = system(cmdtxt)
@@ -1130,7 +1161,7 @@ function! s:NM_newComposeBuffer(lines, start_on_line)
         if start_on_line > 0 && start_on_line <= len(lines)
                 call cursor(start_on_line, strlen(getline(start_on_line)) + 1)
         else
-                call cursor(real_hdr_start, strlen(getline(real_hdr_start) + 1)
+                call cursor(real_hdr_start, strlen(getline(real_hdr_start)) + 1)
                 call <SID>NM_compose_next_entry_area()
         endif
 
@@ -1227,7 +1258,7 @@ endfunction
 " --- external mail handling helpers {{{1
 
 function! s:NM_new_mail()
-        echo 'not implemented'
+        call <SID>NM_cmd_compose([], [])
 endfunction
 
 " --- tag manipulation helpers {{{1