" Location: autoload/fugitive.vim " Maintainer: Tim Pope if exists('g:autoloaded_fugitive') finish endif let g:autoloaded_fugitive = 1 if !exists('g:fugitive_git_executable') let g:fugitive_git_executable = 'git' elseif g:fugitive_git_executable =~# '^\w\+=' let g:fugitive_git_executable = 'env ' . g:fugitive_git_executable endif " Section: Utility function! s:function(name) abort return function(substitute(a:name,'^s:',matchstr(expand(''), '.*\zs\d\+_'),'')) endfunction function! s:sub(str,pat,rep) abort return substitute(a:str,'\v\C'.a:pat,a:rep,'') endfunction function! s:gsub(str,pat,rep) abort return substitute(a:str,'\v\C'.a:pat,a:rep,'g') endfunction function! s:Uniq(list) abort let i = 0 let seen = {} while i < len(a:list) let str = string(a:list[i]) if has_key(seen, str) call remove(a:list, i) else let seen[str] = 1 let i += 1 endif endwhile return a:list endfunction function! s:winshell() abort return has('win32') && &shellcmdflag !~# '^-' endfunction function! s:WinShellEsc(arg) abort if type(a:arg) == type([]) return join(map(copy(a:arg), 's:shellesc(v:val)')) elseif a:arg =~# '^[A-Za-z0-9_/:.-]\+$' return a:arg else return '"' . s:gsub(s:gsub(a:arg, '"', '""'), '\%', '"%"') . '"' endif endfunction function! s:shellesc(arg) abort if type(a:arg) == type([]) return join(map(copy(a:arg), 's:shellesc(v:val)')) <<<<<<< HEAD <<<<<<< HEAD elseif a:arg =~ '^[A-Za-z0-9_/.-]\+$' ======= elseif a:arg =~ '^[A-Za-z0-9_/:.-]\+$' >>>>>>> 27ad0d07862847896f691309a544a206783c94d6 ======= elseif a:arg =~# '^[A-Za-z0-9_/:.-]\+$' >>>>>>> master return a:arg elseif s:winshell() return '"' . s:gsub(s:gsub(a:arg, '"', '""'), '\%', '"%"') . '"' else return shellescape(a:arg) endif endfunction let s:fnameescape = " \t\n*?[{`$\\%#'\"|!<" function! s:fnameescape(file) abort if type(a:file) == type([]) return join(map(copy(a:file), 's:fnameescape(v:val)')) elseif exists('*fnameescape') return fnameescape(a:file) else return escape(a:file, s:fnameescape) endif endfunction function! s:throw(string) abort throw 'fugitive: '.a:string endfunction function! s:DirCheck(...) abort <<<<<<< HEAD if empty(a:0 ? s:Dir(a:1) : s:Dir()) return 'return ' . string('echoerr "fugitive: not a Git repository"') endif return '' endfunction function! s:Mods(mods, ...) abort let mods = substitute(a:mods, '\C', '', '') let mods = mods =~# '\S$' ? a:mods . ' ' : a:mods if a:0 && mods !~# '\<\%(aboveleft\|belowright\|leftabove\|rightbelow\|topleft\|botright\|tab\)\>' let mods = a:1 . ' ' . mods endif return substitute(mods, '\s\+', ' ', 'g') ======= if !empty(a:0 ? s:Dir(a:1) : s:Dir()) return '' elseif empty(bufname('')) return 'return ' . string('echoerr "fugitive: working directory does not belong to a Git repository"') else return 'return ' . string('echoerr "fugitive: file does not belong to a Git repository"') endif >>>>>>> 27ad0d07862847896f691309a544a206783c94d6 endfunction function! s:Mods(mods, ...) abort let mods = substitute(a:mods, '\C', '', '') let mods = mods =~# '\S$' ? mods . ' ' : mods if a:0 && mods !~# '\<\%(aboveleft\|belowright\|leftabove\|rightbelow\|topleft\|botright\|tab\)\>' let mods = a:1 . ' ' . mods endif return substitute(mods, '\s\+', ' ', 'g') endfunction function! s:Slash(path) abort if exists('+shellslash') return tr(a:path, '\', '/') else return a:path endif endfunction function! s:Resolve(path) abort let path = resolve(a:path) if has('win32') let path = FugitiveVimPath(fnamemodify(fnamemodify(path, ':h'), ':p') . fnamemodify(path, ':t')) endif return path endfunction function! s:FileIgnoreCase(for_completion) abort return (exists('+fileignorecase') && &fileignorecase) \ || (a:for_completion && exists('+wildignorecase') && &wildignorecase) endfunction function! s:cpath(path, ...) abort if s:FileIgnoreCase(0) let path = FugitiveVimPath(tolower(a:path)) else let path = FugitiveVimPath(a:path) endif return a:0 ? path ==# s:cpath(a:1) : path endfunction let s:executables = {} function! s:executable(binary) abort if !has_key(s:executables, a:binary) let s:executables[a:binary] = executable(a:binary) endif return s:executables[a:binary] endfunction <<<<<<< HEAD let s:nowait = v:version >= 704 ? '' : '' function! s:map(mode, lhs, rhs, ...) abort let flags = (a:0 ? a:1 : '') . (a:rhs =~# '' ? '' : '