]> git.notmuchmail.org Git - notmuch/blobdiff - vim/plugin/notmuch.vim
Fix typo in message
[notmuch] / vim / plugin / notmuch.vim
index 37781c0c8bcc9988125e749fb350f9b5310207ef..a9754f2b4b2e94de332931806260323ff674bfaa 100644 (file)
@@ -114,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>',
@@ -137,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>',
@@ -176,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 = []
@@ -265,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()
@@ -347,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)
@@ -402,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)
@@ -424,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']))
@@ -444,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
@@ -473,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
@@ -499,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()
@@ -625,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