mirror of
https://github.com/tpope/vim-fugitive.git
synced 2025-11-11 21:03:53 -05:00
Add g:fugitive_git_command
The idea is that g:fugitive_git_command is for user facing commands and suitable to be changed to something like "hub", while g:fugitive_git_executable is for low level internals.
This commit is contained in:
@@ -70,6 +70,10 @@ endfunction
|
|||||||
|
|
||||||
let s:git_versions = {}
|
let s:git_versions = {}
|
||||||
|
|
||||||
|
function! s:git_command() abort
|
||||||
|
return get(g:, 'fugitive_git_command', g:fugitive_git_executable)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! fugitive#git_version(...) abort
|
function! fugitive#git_version(...) abort
|
||||||
if !has_key(s:git_versions, g:fugitive_git_executable)
|
if !has_key(s:git_versions, g:fugitive_git_executable)
|
||||||
let s:git_versions[g:fugitive_git_executable] = matchstr(system(g:fugitive_git_executable.' --version'), "\\S\\+\n")
|
let s:git_versions[g:fugitive_git_executable] = matchstr(system(g:fugitive_git_executable.' --version'), "\\S\\+\n")
|
||||||
@@ -374,12 +378,14 @@ endfunction
|
|||||||
call s:add_methods('repo',['dir','tree','bare','translate','head'])
|
call s:add_methods('repo',['dir','tree','bare','translate','head'])
|
||||||
|
|
||||||
function! s:repo_git_command(...) dict abort
|
function! s:repo_git_command(...) dict abort
|
||||||
let git = g:fugitive_git_executable . ' --git-dir='.s:shellesc(self.git_dir)
|
let git = s:git_command() . ' --git-dir='.s:shellesc(self.git_dir)
|
||||||
return git.join(map(copy(a:000),'" ".s:shellesc(v:val)'),'')
|
return git.join(map(copy(a:000),'" ".s:shellesc(v:val)'),'')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_git_chomp(...) dict abort
|
function! s:repo_git_chomp(...) dict abort
|
||||||
return s:sub(system(call(self.git_command,a:000,self)),'\n$','')
|
let git = g:fugitive_git_executable . ' --git-dir='.s:shellesc(self.git_dir)
|
||||||
|
let output = git.join(map(copy(a:000),'" ".s:shellesc(v:val)'),'')
|
||||||
|
return s:sub(system(output),'\n$','')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_git_chomp_in_tree(...) dict abort
|
function! s:repo_git_chomp_in_tree(...) dict abort
|
||||||
@@ -456,7 +462,7 @@ endfunction
|
|||||||
call s:add_methods('repo',['dirglob','superglob'])
|
call s:add_methods('repo',['dirglob','superglob'])
|
||||||
|
|
||||||
function! s:repo_config(conf) dict abort
|
function! s:repo_config(conf) dict abort
|
||||||
return matchstr(system(s:repo().git_command('config').' '.a:conf),"[^\r\n]*")
|
return matchstr(s:repo().git_chomp('config',a:conf),"[^\r\n]*")
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
function! s:repo_user() dict abort
|
function! s:repo_user() dict abort
|
||||||
@@ -480,9 +486,9 @@ call s:add_methods('repo',['config', 'user', 'aliases'])
|
|||||||
function! s:repo_keywordprg() dict abort
|
function! s:repo_keywordprg() dict abort
|
||||||
let args = ' --git-dir='.escape(self.dir(),"\\\"' ")
|
let args = ' --git-dir='.escape(self.dir(),"\\\"' ")
|
||||||
if has('gui_running') && !has('win32')
|
if has('gui_running') && !has('win32')
|
||||||
return g:fugitive_git_executable . ' --no-pager' . args . ' log -1'
|
return s:git_command() . ' --no-pager' . args . ' log -1'
|
||||||
else
|
else
|
||||||
return g:fugitive_git_executable . args . ' show'
|
return s:git_command() . args . ' show'
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -693,7 +699,7 @@ function! s:Git(bang, args) abort
|
|||||||
if a:bang
|
if a:bang
|
||||||
return s:Edit('edit', 1, a:args)
|
return s:Edit('edit', 1, a:args)
|
||||||
endif
|
endif
|
||||||
let git = g:fugitive_git_executable
|
let git = s:git_command()
|
||||||
if has('gui_running') && !has('win32')
|
if has('gui_running') && !has('win32')
|
||||||
let git .= ' --no-pager'
|
let git .= ' --no-pager'
|
||||||
endif
|
endif
|
||||||
@@ -1211,7 +1217,7 @@ function! s:Merge(cmd, bang, args) abort
|
|||||||
\ !empty(s:repo().git_chomp('diff-files', '--diff-filter=U')))
|
\ !empty(s:repo().git_chomp('diff-files', '--diff-filter=U')))
|
||||||
let &l:makeprg = g:fugitive_git_executable.' diff-files --name-status --diff-filter=U'
|
let &l:makeprg = g:fugitive_git_executable.' diff-files --name-status --diff-filter=U'
|
||||||
else
|
else
|
||||||
let &l:makeprg = s:sub(g:fugitive_git_executable . ' ' . a:cmd .
|
let &l:makeprg = s:sub(s:git_command() . ' ' . a:cmd .
|
||||||
\ (a:args =~# ' \%(--no-edit\|--abort\|-m\)\>' ? '' : ' --edit') .
|
\ (a:args =~# ' \%(--no-edit\|--abort\|-m\)\>' ? '' : ' --edit') .
|
||||||
\ ' ' . a:args, ' *$', '')
|
\ ' ' . a:args, ' *$', '')
|
||||||
endif
|
endif
|
||||||
@@ -1635,7 +1641,7 @@ function! s:Dispatch(bang, args)
|
|||||||
try
|
try
|
||||||
let b:current_compiler = 'git'
|
let b:current_compiler = 'git'
|
||||||
let &l:errorformat = s:common_efm
|
let &l:errorformat = s:common_efm
|
||||||
let &l:makeprg = g:fugitive_git_executable . ' ' . a:args
|
let &l:makeprg = s:git_command() . ' ' . a:args
|
||||||
execute cd fnameescape(s:repo().tree())
|
execute cd fnameescape(s:repo().tree())
|
||||||
if exists(':Make') == 2
|
if exists(':Make') == 2
|
||||||
noautocmd Make
|
noautocmd Make
|
||||||
|
|||||||
Reference in New Issue
Block a user