X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=3bb9d363d382ff3dd262e7f4879bff74986c70e0;hp=308fc05d8010094bffe66678d54ceecfbc7301cf;hb=dda6b7eb1c5a75dc31595376212d0e30c5fd61ed;hpb=5a9d5fb20091a34efdf6716d4481799097ec9269 diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index 308fc05d..3bb9d363 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -91,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()', @@ -109,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)', @@ -212,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 @@ -241,12 +240,13 @@ function! s:NM_search_prompt() else let tags = s:notmuch_initial_search_words_defaults endif - let prev_bufnr = bufnr('%') 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) @@ -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