diff --git a/.vim/autoload/vimrc.vim b/.vim/autoload/vimrc.vim --- a/.vim/autoload/vimrc.vim +++ b/.vim/autoload/vimrc.vim @@ -35,27 +35,15 @@ func! vimrc#AutoSessionCheck() abort endif endfunc -func! vimrc#Ag(args) abort - let orig_t_ti = &t_ti - let orig_t_te = &t_te - let orig_shellpipe = &shellpipe - - set t_ti= t_te= - let &shellpipe = substitute(&shellpipe, '| tee', ' >', '') - - let grepargs = a:args == '' ? expand('') : a:args . join(a:000, ' ') +func! vimrc#Grep(...) abort + let pattern = get(a:000, 0, expand('')) + let cmd = join([&grepprg, shellescape(pattern)] + a:000[1:], ' ') - try - silent! execute "grep " . escape(grepargs, '|') - copen - - let @/ = matchstr(a:args, "\\v(-)\@", 'n') - finally - let &t_ti = orig_t_ti - let &t_te = orig_t_te - let &shellpipe = orig_shellpipe - endtry + cgetexpr system(cmd) + call setqflist([], 'a', {"title": cmd}) + let @/ = '\v' . pattern + copen + cfirst endfunc func! vimrc#Gcd() abort