mirror of
https://github.com/tpope/vim-fugitive.git
synced 2025-11-14 22:33:51 -05:00
Improve error reporting for BufReadCmd autocommands
This commit is contained in:
@@ -2640,12 +2640,10 @@ call extend(g:fugitive_browse_handlers,
|
|||||||
|
|
||||||
" Section: File access
|
" Section: File access
|
||||||
|
|
||||||
function! s:ReplaceCmd(cmd,...) abort
|
function! s:WriteCmd(out, cmd, ...) abort
|
||||||
let fn = expand('%:p')
|
|
||||||
let tmp = tempname()
|
|
||||||
let prefix = ''
|
let prefix = ''
|
||||||
try
|
try
|
||||||
if a:0 && a:1 != ''
|
if a:0 && len(a:1)
|
||||||
if s:winshell()
|
if s:winshell()
|
||||||
let old_index = $GIT_INDEX_FILE
|
let old_index = $GIT_INDEX_FILE
|
||||||
let $GIT_INDEX_FILE = a:1
|
let $GIT_INDEX_FILE = a:1
|
||||||
@@ -2653,23 +2651,29 @@ function! s:ReplaceCmd(cmd,...) abort
|
|||||||
let prefix = 'env GIT_INDEX_FILE='.s:shellesc(a:1).' '
|
let prefix = 'env GIT_INDEX_FILE='.s:shellesc(a:1).' '
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let redir = ' > '.tmp
|
let redir = ' > '.a:out
|
||||||
if &shellpipe =~ '2>&1'
|
|
||||||
let redir .= ' 2>&1'
|
|
||||||
endif
|
|
||||||
if s:winshell()
|
if s:winshell()
|
||||||
let cmd_escape_char = &shellxquote == '(' ? '^' : '^^^'
|
let cmd_escape_char = &shellxquote == '(' ? '^' : '^^^'
|
||||||
call system('cmd /c "'.prefix.s:gsub(a:cmd,'[<>]', cmd_escape_char.'&').redir.'"')
|
return system('cmd /c "'.prefix.s:gsub(a:cmd,'[<>]', cmd_escape_char.'&').redir.'"')
|
||||||
elseif &shell =~# 'fish'
|
elseif &shell =~# 'fish'
|
||||||
call system(' begin;'.prefix.a:cmd.redir.';end ')
|
return system(' begin;'.prefix.a:cmd.redir.';end ')
|
||||||
else
|
else
|
||||||
call system(' ('.prefix.a:cmd.redir.') ')
|
return system(' ('.prefix.a:cmd.redir.') ')
|
||||||
endif
|
endif
|
||||||
finally
|
finally
|
||||||
if exists('old_index')
|
if exists('old_index')
|
||||||
let $GIT_INDEX_FILE = old_index
|
let $GIT_INDEX_FILE = old_index
|
||||||
endif
|
endif
|
||||||
endtry
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:ReplaceCmd(cmd, ...) abort
|
||||||
|
let tmp = tempname()
|
||||||
|
let err = s:WriteCmd(tmp, a:cmd, a:0 ? a:1 : '')
|
||||||
|
if v:shell_error
|
||||||
|
throw 'fugitive: ' . (len(err) ? err : filereadable(tmp) ? join(readfile(tmp), ' | ') : 'unknown error running ' . a:cmd)
|
||||||
|
endif
|
||||||
|
let fn = expand('%:p')
|
||||||
silent exe 'doau BufReadPre '.s:fnameescape(fn)
|
silent exe 'doau BufReadPre '.s:fnameescape(fn)
|
||||||
silent exe 'keepalt file '.tmp
|
silent exe 'keepalt file '.tmp
|
||||||
try
|
try
|
||||||
|
|||||||
Reference in New Issue
Block a user