X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=vim%2Fplugin%2Fnotmuch.vim;h=15958f18c02c407d93056717aa858b825c4cfc47;hp=c8a27ad7cc2c310a38a8961e1bcfb6ad924769d2;hb=480903adac81ec03613c4edf46c9c2f6a2766c4c;hpb=8c8dacb26a08acc91cee723276851feb369743d0 diff --git a/vim/plugin/notmuch.vim b/vim/plugin/notmuch.vim index c8a27ad7..15958f18 100644 --- a/vim/plugin/notmuch.vim +++ b/vim/plugin/notmuch.vim @@ -161,7 +161,7 @@ function! s:NM_cmd_folders(words) let b:nm_timestamp = reltime() call NM_cmd_folders_mksyntax() - call NM_set_map(g:notmuch_folders_maps) + call NM_set_map('n', g:notmuch_folders_maps) setlocal cursorline setlocal nowrap endfunction @@ -209,7 +209,7 @@ function! s:NM_cmd_search(words) let b:nm_search_words = a:words call NM_cmd_search_mksyntax() - call NM_set_map(g:notmuch_search_maps) + call NM_set_map('n', g:notmuch_search_maps) setlocal cursorline setlocal nowrap endfunction @@ -254,7 +254,7 @@ function! s:NM_search_prompt() let tags = s:notmuch_initial_search_words_defaults endif let prev_bufnr = bufnr('%') - if b:nm_type == 'search' + if b:nm_type == 'search' && exists('b:nm_prev_bufnr') " TODO: we intend to replace the current buffer, " ... maybe we could just clear it let prev_bufnr = b:nm_prev_bufnr @@ -351,12 +351,15 @@ function! s:NM_search_thread_id() if !exists('b:nm_raw_lines') echoe 'no b:nm_raw_lines' return '' - else - let line = line('.') - let info = b:nm_raw_lines[line-1] - let what = split(info, '\s\+')[0] - return what endif + let mnum = line('.') - 1 + if len(b:nm_raw_lines) <= mnum + return '' + endif + echo 'len=' . string(len(b:nm_raw_lines)) . ' mnum=' . string(mnum) + let info = b:nm_raw_lines[mnum] + let what = split(info, '\s\+')[0] + return what endfunction function! s:NM_search_add_remove_tags(prompt, prefix, intags) @@ -392,7 +395,7 @@ function! s:NM_cmd_show(words) call NM_cmd_show_mkfolds() call NM_cmd_show_mksyntax() - call NM_set_map(g:notmuch_show_maps) + call NM_set_map('n', g:notmuch_show_maps) setlocal foldtext=NM_cmd_show_foldtext() setlocal fillchars= setlocal foldcolumn=6 @@ -521,7 +524,6 @@ function! s:NM_show_advance_marking_read_and_archiving() endfor let filter = ['('] + advance_tags + [')', 'AND', '('] + ids + [')'] -echo 'NM_add_remove_tags ALL filter=' . string(filter) call NM_add_remove_tags(filter, '-', advance_tags) call NM_show_next(1, 1) return @@ -532,8 +534,6 @@ echo 'NM_add_remove_tags ALL filter=' . string(filter) echo "No bottom visible message." endif - echo 'top=' . msg_top['id'] . ' bot=' . msg_top['id'] - " if entire message fits on the screen, read/archive it, move to the next one if msg_top['id'] != msg_bot['id'] || msg_top['end'] <= vis_bot call NM_add_remove_tags_on_screen(msg_top['start'], '-', advance_tags) @@ -543,7 +543,6 @@ echo 'NM_add_remove_tags ALL filter=' . string(filter) redraw " do this last to hide the latency let filter = ['('] + advance_tags + [')', 'AND', msg_top['id']] -echo 'NM_add_remove_tags 1 filter=' . string(filter) call NM_add_remove_tags(filter, '-', advance_tags) endif return @@ -919,14 +918,12 @@ function! s:NM_add_remove_tags(filter, prefix, tags) if !len(filter) echoe 'Eeek! I couldn''t find the thead id!' endif - echo 'filter = ' . string(filter) . ' ... ' . string(type(filter)) call map(a:tags, 'a:prefix . v:val') - " TODO: handle errors let args = ['tag'] call extend(args, a:tags) call add(args, '--') call extend(args, filter) - echo 'NUM_run( ' . string(args) . ' )' + " TODO: handle errors call NM_run(args) endfunction @@ -982,10 +979,10 @@ endif " --- assign keymaps {{{1 -function! s:NM_set_map(maps) +function! s:NM_set_map(type, maps) nmapclear for [key, code] in items(a:maps) - exec printf('nnoremap %s %s', key, code) + exec printf('%snoremap %s %s', a:type, key, code) endfor " --- this is a hack for development :) nnoremap ,nmr :source ~/.vim/plugin/notmuch.vim:call NotMuch('') @@ -1003,6 +1000,7 @@ function! NotMuch(args) if words[0] == 'folders' let words = words[1:] call NM_cmd_folders(words) + elseif words[0] == 'search' if len(words) > 1 let words = words[1:]