+" --- --- search screen action functions {{{2
+
+function! s:NM_search_show_thread()
+ let id = NM_search_find_thread_id()
+ if id != ''
+ call s:NM_cmd_show([id])
+ endif
+endfunction
+
+function! s:NM_search_prompt()
+ " TODO: input() can support completion
+ let text = input('NotMuch Search: ')
+ if strlen(text)
+ call <SID>NM_cmd_search(split(text))
+ endif
+endfunction
+
+function! s:NM_search_edit()
+ " TODO: input() can support completion
+ let text = input('NotMuch Search: ', join(g:notmuch_current_search_words, ' '))
+ if strlen(text)
+ call <SID>NM_cmd_search(split(text))
+ endif
+endfunction
+
+function! s:NM_search_archive_thread()
+ call <SID>NM_search_remove_tags('inbox')
+ norm j
+endfunction
+
+function! s:NM_search_filter()
+ echoe 'Not implemented'
+endfunction
+
+function! s:NM_new_mail()
+ echoe 'Not implemented'
+endfunction
+
+function! s:NM_search_toggle_order()
+ echoe 'Not implemented'
+endfunction
+
+function! s:NM_search_reply_to_thread()
+ echoe 'Not implemented'
+endfunction
+
+function! s:NM_search_filter_by_tag()
+ echoe 'Not implemented'
+endfunction
+
+function! s:NM_search_add_tags(tags)
+ call <SID>NM_search_add_remove_tags('Add Tag(s): ', '+', a:tags)
+endfunction
+
+function! s:NM_search_remove_tags(tags)
+ call <SID>NM_search_add_remove_tags('Remove Tag(s): ', '-', a:tags)
+endfunction
+
+function! s:NM_search_refresh_view()
+ let lno = line('.')
+ call s:NM_cmd_search(g:notmuch_current_search_words)
+ " FIXME: should find the line of the thread we were on if possible
+ exec printf('norm %dG', lno)
+endfunction
+
+" --- --- search screen helper functions {{{2
+
+function! s:NM_search_find_thread_id()