commit e7d2e876900c4e09be59d4e1037ecceeeb880987 (tree)
parent 5d1a276b455dd9a32375a5ac84050adff67062e3
Author: Tim Pope <code@tpope.net>
Date: Sun, 22 Aug 2021 01:30:33 -0400
Do what I mean for :Git -c alias.foo=blame foo
Diffstat:
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim
@@ -937,7 +937,7 @@ function! fugitive#Config(...) abort
elseif a:0 >= 2
let dir = s:Dir(a:2)
let name = a:1
- elseif a:0 == 1 && type(a:1) == type({}) && !has_key(a:1, 'git_dir')
+ elseif a:0 == 1 && type(a:1) == type({}) && has_key(a:1, 'GetAll')
return a:1
elseif a:0 == 1 && type(a:1) == type('') && a:1 =~# '^[[:alnum:]-]\+\.'
let dir = s:Dir()
@@ -3336,6 +3336,23 @@ function! fugitive#Command(line1, line2, range, bang, mods, arg) abort
if no_pager
call add(flags, '--no-pager')
endif
+ let env = {}
+ let i = 0
+ while i < len(flags) - 1
+ if flags[i] ==# '-c'
+ let i += 1
+ let config_name = tolower(matchstr(flags[i], '^[^=]\+'))
+ if has_key(s:prepare_env, config_name) && flags[i] =~# '=.'
+ let env[s:prepare_env[config_name]] = matchstr(flags[i], '=\zs.*')
+ endif
+ if flags[i] =~# '='
+ let config[config_name] = [matchstr(flags[i], '=\zs.*')]
+ else
+ let config[config_name] = [1]
+ endif
+ endif
+ let i += 1
+ endwhile
let options = {'git': s:UserCommandList(), 'git_dir': s:GitDir(dir), 'flags': flags}
if empty(args) && pager is# -1
let cmd = s:StatusCommand(a:line1, a:line2, a:range, a:line2, a:bang, a:mods, '', '', [], options)
@@ -3361,23 +3378,7 @@ function! fugitive#Command(line1, line2, range, bang, mods, arg) abort
else
let overrides = {}
endif
- let env = get(overrides, 'env', {})
- let i = 0
- while i < len(flags) - 1
- if flags[i] ==# '-c'
- let i += 1
- let config_name = tolower(matchstr(flags[i], '^[^=]\+'))
- if has_key(s:prepare_env, config_name) && flags[i] =~# '=.'
- let env[s:prepare_env[config_name]] = matchstr(flags[i], '=\zs.*')
- endif
- if flags[i] =~# '='
- let config[config_name] = [matchstr(flags[i], '=\zs.*')]
- else
- let config[config_name] = [1]
- endif
- endif
- let i += 1
- endwhile
+ call extend(env, get(overrides, 'env', {}))
call s:PrepareEnv(env, dir)
if pager is# -1
let pager = fugitive#PagerFor(args, config)