X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;ds=sidebyside;f=vim%2Fplugin%2Fnotmuch.vim;h=3bb9d363d382ff3dd262e7f4879bff74986c70e0;hb=dda6b7eb1c5a75dc31595376212d0e30c5fd61ed;hp=f134e6522e327db068479317f734e7d16e15a663;hpb=33c896dd717b73dda48b0e4543aaf4376c57c44a;p=notmuch diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index f134e652..3bb9d363 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -82,9 +82,8 @@ let s:notmuch_folders_defaults = [ " --- --- bindings for folders mode {{{2 let g:notmuch_folders_maps = { - \ 's': ':call NM_folders_notmuch_search()', + \ 's': ':call NM_search_prompt()', \ 'q': ':call NM_kill_this_buffer()', - \ '<': ':call NM_folders_beginning_of_buffer()', \ '=': ':call NM_folders_refresh_view()', \ '': ':call NM_folders_show_search()', \ } @@ -92,6 +91,7 @@ let g:notmuch_folders_maps = { " --- --- bindings for search screen {{{2 let g:notmuch_search_maps = { \ '': ':call NM_search_show_thread()', + \ '': ':call NM_search_expand('''')', \ 'a': ':call NM_search_archive_thread()', \ 'f': ':call NM_search_filter()', \ 'm': ':call NM_new_mail()', @@ -110,6 +110,7 @@ let g:notmuch_search_maps = { let g:notmuch_show_maps = { \ '': ':call NM_show_previous(1)', \ '': ':call NM_show_next(1)', + \ '': ':call NM_search_expand('''')', \ 'q': ':call NM_kill_this_buffer()', \ \ 'b': ':call NM_show_fold_toggle(''b'', ''bdy'', !g:notmuch_show_fold_bodies)', @@ -163,20 +164,11 @@ endfunction " --- --- folders screen action functions {{{2 -function! s:NM_folders_notmuch_search() - echo 'not implemented' -endfunction - -function! s:NM_kill_this_buffer() - echo 'not implemented' -endfunction - -function! s:NM_folders_beginning_of_buffer() - echo 'not implemented' -endfunction - -function! s:NM_folders_notmuch_folder() - echo 'not implemented' +function! s:NM_folders_refresh_view() + let lno = line('.') + setlocal bufhidden=delete + call s:NM_cmd_folders([]) + exec printf('norm %dG', lno) endfunction function! s:NM_folders_show_search() @@ -222,16 +214,13 @@ function! s:NM_cmd_search_fmtline(line) let max = g:notmuch_search_from_column_width let from = m[3] if strlen(from) >= max - let from = m[3][0:max-4] . '...' + let from = substitute(m[3][0:max-4], '[^A-Za-z1-9_]*$', '', '') . '...' endif return printf('%s %-20s | %s (%s)', m[2], from, m[4], m[5]) endfunction function! s:NM_cmd_search_mksyntax() syntax clear nmSearchFrom - "syntax region nmSearchFrom start='\]\@<=' end='.'me=e+5,he=e+5,re=e+5 oneline contained - "syntax match nmSearchFrom /\]\@<=.\{10\}/ oneline contained exec printf('syntax match nmSearchFrom /\(\] \)\@<=.\{%d\}/ oneline contained', g:notmuch_search_from_column_width) - "exec printf('syntax region nmSearchFrom start=''\%%%dv'' end=''\%%%dv'' oneline contained', 20, 30) endfunction " --- --- search screen action functions {{{2 @@ -251,8 +240,18 @@ function! s:NM_search_prompt() else let tags = s:notmuch_initial_search_words_defaults endif - setlocal bufhidden=delete + if b:nm_type == 'search' + " TODO: we intend to replace the current buffer, + " ... maybe we could just clear it + let prev_bufnr = b:nm_prev_bufnr + setlocal bufhidden=delete + else + let prev_bufnr = bufnr('%') + setlocal bufhidden=hide + endif call NM_cmd_search(tags) + setlocal bufhidden=delete + let b:nm_prev_bufnr = prev_bufnr endfunction function! s:NM_search_edit() @@ -713,14 +712,15 @@ endfunction " --- notmuch helper functions {{{1 -function! s:NM_newBuffer(ft, content) +function! s:NM_newBuffer(type, content) enew setlocal buftype=nofile readonly modifiable silent put=a:content keepjumps 0d setlocal nomodifiable - execute printf('set filetype=notmuch-%s', a:ft) - execute printf('set syntax=notmuch-%s', a:ft) + execute printf('set filetype=notmuch-%s', a:type) + execute printf('set syntax=notmuch-%s', a:type) + let b:nm_type = a:type endfunction function! s:NM_run(args) @@ -760,6 +760,15 @@ function! s:NM_kill_this_buffer() endif endfunction +function! s:NM_search_expand(arg) + let word = expand(a:arg) + let prev_bufnr = bufnr('%') + setlocal bufhidden=hide + call NM_cmd_search([word]) + setlocal bufhidden=delete + let b:nm_prev_bufnr = prev_bufnr +endfunction + function! s:NM_add_remove_tags(prefix, tags) let id = NM_search_find_thread_id() if id == '' @@ -796,6 +805,7 @@ function! NM_set_defaults(force) let cmd = printf('let %s = %d', key, dflt) elseif type(dflt) == type('') let cmd = printf('let %s = ''%s''', key, dflt) + " FIXME: not sure why this didn't work when dflt is an array "elseif type(dflt) == type([]) " let cmd = printf('let %s = %s', key, string(dflt)) else