diff --git a/plugin/fugitive.vim b/plugin/fugitive.vim index 41477f1b97e8947a635379abf54397b3c6769bda..67b3bf5b00a4d5c1a655bf2200538983894669f1 100644 --- a/plugin/fugitive.vim +++ b/plugin/fugitive.vim @@ -1870,14 +1870,19 @@ endfunction function! s:github_url(repo,url,rev,commit,path,type,line1,line2) abort let path = a:path let domain_pattern = 'github\.com' - for domain in exists('g:fugitive_github_domains') ? g:fugitive_github_domains : [] - let domain_pattern .= '\|' . escape(domain, '.') + let domains = exists('g:fugitive_github_domains') ? g:fugitive_github_domains : [] + for domain in domains + let domain_pattern .= '\|' . escape(split(domain, '://')[-1], '.') endfor let repo = matchstr(a:url,'^\%(https\=://\|git://\|git@\)\zs\('.domain_pattern.'\)[/:].\{-\}\ze\%(\.git\)\=$') if repo ==# '' return '' endif - let root = 'https://' . s:sub(repo,':','/') + if index(g:fugitive_github_domains, 'http://' . matchstr(repo, '^[^:/]*')) >= 0 + let root = 'http://' . s:sub(repo,':','/') + else + let root = 'https://' . s:sub(repo,':','/') + endif if path =~# '^\.git/refs/heads/' let branch = a:repo.git_chomp('config','branch.'.path[16:-1].'.merge')[11:-1] if branch ==# ''