Pass :Glog arguments to git-log
This commit is contained in:
parent
1ed26db43a
commit
037ce62894
@ -56,8 +56,11 @@ that are part of Git repositories).
|
|||||||
:Ggrep [args] |:grep| with git-grep as 'grepprg'.
|
:Ggrep [args] |:grep| with git-grep as 'grepprg'.
|
||||||
|
|
||||||
*fugitive-:Glog*
|
*fugitive-:Glog*
|
||||||
:Glog Load all commits that touched the current file into
|
:Glog [args] Load all previous revisions of the current file into
|
||||||
the quickfix list.
|
the quickfix list. Additional git-log arguments can
|
||||||
|
be given (for example, --reverse). If "--" appears as
|
||||||
|
an argument, no file specific filtering is done, and
|
||||||
|
commits are loaded into the quickfix list.
|
||||||
|
|
||||||
*fugitive-:Gedit* *fugitive-:Ge*
|
*fugitive-:Gedit* *fugitive-:Ge*
|
||||||
:Gedit [revision] |:edit| a |fugitive-revision|.
|
:Gedit [revision] |:edit| a |fugitive-revision|.
|
||||||
|
@ -340,8 +340,6 @@ function! s:buffer_path(...) dict abort
|
|||||||
let rev = matchstr(self.name(),'^fugitive://.\{-\}//\zs.*')
|
let rev = matchstr(self.name(),'^fugitive://.\{-\}//\zs.*')
|
||||||
if rev != ''
|
if rev != ''
|
||||||
let rev = s:sub(rev,'\w*','')
|
let rev = s:sub(rev,'\w*','')
|
||||||
elseif self.name() =~ '\.git/refs/\|\.git/.*HEAD$'
|
|
||||||
let rev = ''
|
|
||||||
else
|
else
|
||||||
let rev = self.name()[strlen(self.repo().tree()) : -1]
|
let rev = self.name()[strlen(self.repo().tree()) : -1]
|
||||||
endif
|
endif
|
||||||
@ -536,7 +534,7 @@ endfunction
|
|||||||
" Ggrep, Glog {{{1
|
" Ggrep, Glog {{{1
|
||||||
|
|
||||||
call s:command("-bar -bang -nargs=? -complete=customlist,s:EditComplete Ggrep :execute s:Grep(<bang>0,<q-args>)")
|
call s:command("-bar -bang -nargs=? -complete=customlist,s:EditComplete Ggrep :execute s:Grep(<bang>0,<q-args>)")
|
||||||
call s:command("-bar -bang Glog :execute s:Log('grep<bang>')")
|
call s:command("-bar -bang -nargs=* -complete=customlist,s:EditComplete Glog :execute s:Log('grep<bang>',<f-args>)")
|
||||||
|
|
||||||
function! s:Grep(bang,arg) abort
|
function! s:Grep(bang,arg) abort
|
||||||
let grepprg = &grepprg
|
let grepprg = &grepprg
|
||||||
@ -571,28 +569,37 @@ function! s:Grep(bang,arg) abort
|
|||||||
endtry
|
endtry
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:Log(cmd)
|
function! s:Log(cmd,...)
|
||||||
let path = s:buffer().path('/')
|
let path = s:buffer().path('/')
|
||||||
if path =~# '^/\.git\%(/\|$\)'
|
if path =~# '^/\.git\%(/\|$\)' || index(a:000,'--') != -1
|
||||||
let path = ''
|
let path = ''
|
||||||
endif
|
endif
|
||||||
let cmd = ['--no-pager', 'log', '--no-color', '--pretty=format:fugitive://'.s:repo().dir().'//%H'.path.'::%s']
|
let cmd = ['--no-pager', 'log', '--no-color']
|
||||||
if s:buffer().commit() =~# '\x\{40\}'
|
let cmd += [escape('--pretty=format:fugitive://'.s:repo().dir().'//%H'.path.'::%s','%')]
|
||||||
let cmd += [s:buffer().commit().'^']
|
if empty(filter(a:000[0 : index(a:000,'--')],'v:val !~# "^-"'))
|
||||||
endif
|
if s:buffer().commit() =~# '\x\{40\}'
|
||||||
let cmd += ['--']
|
let cmd += [s:buffer().commit()]
|
||||||
|
elseif s:buffer().path() =~# '^\.git/refs/\|^\.git/.*HEAD$'
|
||||||
|
let cmd += [s:buffer().path()[5:-1]]
|
||||||
|
endif
|
||||||
|
end
|
||||||
|
let cmd += map(copy(a:000),'s:sub(v:val,"^\\%(%(:\\w)*)","\\=fnamemodify(s:buffer().path(),submatch(1))")')
|
||||||
if path =~# '/.'
|
if path =~# '/.'
|
||||||
let cmd += [path[1 : -1]]
|
let cmd += ['--',path[1:-1]]
|
||||||
endif
|
endif
|
||||||
let grepformat = &grepformat
|
let grepformat = &grepformat
|
||||||
let grepprg = &grepprg
|
let grepprg = &grepprg
|
||||||
|
let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '
|
||||||
|
let cd .= s:fnameescape(getcwd())
|
||||||
try
|
try
|
||||||
let &grepprg = escape(call(s:repo().git_command,cmd,s:repo()),'%')
|
cd `=s:repo().tree()`
|
||||||
|
let &grepprg = call(s:repo().git_command,cmd,s:repo())
|
||||||
let &grepformat = '%f::%m'
|
let &grepformat = '%f::%m'
|
||||||
exe a:cmd
|
exe a:cmd
|
||||||
finally
|
finally
|
||||||
let &grepformat = grepformat
|
let &grepformat = grepformat
|
||||||
let &grepprg = grepprg
|
let &grepprg = grepprg
|
||||||
|
exe cd
|
||||||
endtry
|
endtry
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user