diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim index b6cccda..b8fec1d 100644 --- a/autoload/fugitive.vim +++ b/autoload/fugitive.vim @@ -2212,12 +2212,6 @@ function! fugitive#BufReadCmd(...) abort setlocal modifiable - let browsex = maparg('NetrwBrowseX', 'n') - let remote_check = '\Cnetrw#CheckIfRemote(\%(netrw#GX()\)\=)' - if browsex =~# remote_check - exe 'nnoremap NetrwBrowseX' substitute(browsex, remote_check, '0', 'g') - endif - return 'silent ' . s:DoAutocmd('BufReadPost') . \ (modifiable ? '' : '|setl nomodifiable') . '|silent ' . \ s:DoAutocmd('User Fugitive' . substitute(b:fugitive_type, '^\l', '\u&', '')) @@ -6116,6 +6110,24 @@ function! fugitive#MapJumps(...) abort call s:Map('n', 'g?', ":help fugitive-map", '') call s:Map('n', '', ":help fugitive-map", '') endif + + let old_browsex = maparg('NetrwBrowseX', 'n') + let new_browsex = substitute(old_browsex, '\Cnetrw#CheckIfRemote(\%(netrw#GX()\)\=)', '0', 'g') + let new_browsex = substitute(new_browsex, 'netrw#GX()\|expand((exists("g:netrw_gx")? g:netrw_gx : ''''))', 'fugitive#GX()', 'g') + if new_browsex !=# old_browsex + exe 'nnoremap NetrwBrowseX' new_browsex + endif +endfunction + +function! fugitive#GX() abort + try + let results = &filetype ==# 'fugitive' ? s:StatusCfile() : &filetype ==# 'git' ? s:cfile() : [] + if len(results) && len(results[0]) + return FugitiveReal(s:Generate(results[0])) + endif + catch /^fugitive:/ + endtry + return expand(get(g:, 'netrw_gx', expand(''))) endfunction function! s:StatusCfile(...) abort