diff --git a/autoload/fzf/vim.vim b/autoload/fzf/vim.vim index 82a2fc6..62755d5 100644 --- a/autoload/fzf/vim.vim +++ b/autoload/fzf/vim.vim @@ -627,19 +627,24 @@ function! s:tags_sink(lines) normal! m' let qfl = [] let cmd = get(get(g:, 'fzf_action', s:default_action), a:lines[0], 'e') - let [magic, &magic, wrapscan, &wrapscan] = [&magic, 0, &wrapscan, 1] - for line in a:lines[1:] - try - let parts = split(line, '\t\zs') - let excmd = matchstr(join(parts[2:], ''), '^.*\ze;"\t') - call s:open(cmd, parts[1][:-2]) - execute excmd - call add(qfl, {'filename': expand('%'), 'lnum': line('.'), 'text': getline('.')}) - catch - call s:warn(v:exception) - endtry - endfor - let [&magic, &wrapscan] = [magic, wrapscan] + try + let [magic, &magic, wrapscan, &wrapscan] = [&magic, 0, &wrapscan, 1] + for line in a:lines[1:] + try + let parts = split(line, '\t\zs') + let excmd = matchstr(join(parts[2:], ''), '^.*\ze;"\t') + call s:open(cmd, parts[1][:-2]) + execute excmd + call add(qfl, {'filename': expand('%'), 'lnum': line('.'), 'text': getline('.')}) + catch /^Vim:Interrupt$/ + break + catch + call s:warn(v:exception) + endtry + endfor + finally + let [&magic, &wrapscan] = [magic, wrapscan] + endtry if len(qfl) > 1 call setqflist(qfl) copen