Drop some silly instance methods
This commit is contained in:
parent
0aa3389f5c
commit
8c076e3f68
@ -202,14 +202,14 @@ function! fugitive#Init() abort
|
|||||||
endif
|
endif
|
||||||
let buffer = fugitive#buffer()
|
let buffer = fugitive#buffer()
|
||||||
if expand('%:p') =~# ':[\/][\/]'
|
if expand('%:p') =~# ':[\/][\/]'
|
||||||
call buffer.setvar('&path', s:sub(buffer.getvar('&path'), '^\.%(,|$)', ''))
|
let &l:path = s:sub(&path, '^\.%(,|$)', '')
|
||||||
endif
|
endif
|
||||||
if stridx(buffer.getvar('&tags'), escape(b:git_dir, ', ')) == -1
|
if stridx(&tags, escape(b:git_dir, ', ')) == -1
|
||||||
if filereadable(b:git_dir.'/tags')
|
if filereadable(b:git_dir.'/tags')
|
||||||
call buffer.setvar('&tags', escape(b:git_dir.'/tags', ', ').','.buffer.getvar('&tags'))
|
let &l:tags = escape(b:git_dir.'/tags', ', ').','.&tags
|
||||||
endif
|
endif
|
||||||
if &filetype !=# '' && filereadable(b:git_dir.'/'.&filetype.'.tags')
|
if &filetype !=# '' && filereadable(b:git_dir.'/'.&filetype.'.tags')
|
||||||
call buffer.setvar('&tags', escape(b:git_dir.'/'.&filetype.'.tags', ', ').','.buffer.getvar('&tags'))
|
let &l:tags = escape(b:git_dir.'/'.&filetype.'.tags', ', ').','.&tags
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
try
|
try
|
||||||
@ -320,14 +320,17 @@ function! s:repo_translate(spec) dict abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_head(...) dict abort
|
function! s:repo_head(...) dict abort
|
||||||
let head = s:repo().head_ref()
|
if !filereadable(self.dir('HEAD'))
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let head = readfile(self.dir('HEAD'))[0]
|
||||||
|
|
||||||
if head =~# '^ref: '
|
if head =~# '^ref: '
|
||||||
let branch = s:sub(head,'^ref: %(refs/%(heads/|remotes/|tags/)=)=','')
|
let branch = s:sub(head,'^ref: %(refs/%(heads/|remotes/|tags/)=)=','')
|
||||||
elseif head =~# '^\x\{40\}$'
|
elseif head =~# '^\x\{40\}$'
|
||||||
" truncate hash to a:1 characters if we're in detached head mode
|
" truncate hash to a:1 characters if we're in detached head mode
|
||||||
let len = a:0 ? a:1 : 0
|
let len = a:0 ? a:1 : 0
|
||||||
let branch = len ? head[0:len-1] : ''
|
let branch = len < 0 ? head : len ? head[0:len-1] : ''
|
||||||
else
|
else
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
@ -441,17 +444,6 @@ endfunction
|
|||||||
|
|
||||||
call s:add_methods('repo',['config', 'user', 'aliases'])
|
call s:add_methods('repo',['config', 'user', 'aliases'])
|
||||||
|
|
||||||
function! s:repo_keywordprg() dict abort
|
|
||||||
let args = ' --git-dir='.escape(self.dir(),"\\\"' ")
|
|
||||||
if has('gui_running') && !has('win32')
|
|
||||||
return s:git_command() . ' --no-pager' . args . ' log -1'
|
|
||||||
else
|
|
||||||
return s:git_command() . args . ' show'
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
call s:add_methods('repo',['keywordprg'])
|
|
||||||
|
|
||||||
" Section: Buffer
|
" Section: Buffer
|
||||||
|
|
||||||
function! s:DirCommitFile(path) abort
|
function! s:DirCommitFile(path) abort
|
||||||
@ -684,10 +676,6 @@ function! s:buffer_getvar(var) dict abort
|
|||||||
return getbufvar(self['#'],a:var)
|
return getbufvar(self['#'],a:var)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:buffer_setvar(var,value) dict abort
|
|
||||||
return setbufvar(self['#'],a:var,a:value)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:buffer_getline(lnum) dict abort
|
function! s:buffer_getline(lnum) dict abort
|
||||||
return get(getbufline(self['#'], a:lnum), 0, '')
|
return get(getbufline(self['#'], a:lnum), 0, '')
|
||||||
endfunction
|
endfunction
|
||||||
@ -794,14 +782,6 @@ function! s:buffer_rev() dict abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:buffer_sha1() dict abort
|
|
||||||
if self.spec() =~? '^fugitive:' || self.spec() =~ '\.git/refs/\|\.git/.*HEAD$'
|
|
||||||
return self.repo().rev_parse(self.rev())
|
|
||||||
else
|
|
||||||
return ''
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:buffer_expand(rev) dict abort
|
function! s:buffer_expand(rev) dict abort
|
||||||
if a:rev =~# '^:[0-3]$'
|
if a:rev =~# '^:[0-3]$'
|
||||||
let file = a:rev.self.relative(':')
|
let file = a:rev.self.relative(':')
|
||||||
@ -822,16 +802,6 @@ function! s:buffer_expand(rev) dict abort
|
|||||||
\ '\.\@<=/$','')
|
\ '\.\@<=/$','')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:buffer_containing_commit() dict abort
|
|
||||||
if self.commit() =~# '^\d$'
|
|
||||||
return ':'
|
|
||||||
elseif self.commit() =~# '.'
|
|
||||||
return self.commit()
|
|
||||||
else
|
|
||||||
return 'HEAD'
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:buffer_up(...) dict abort
|
function! s:buffer_up(...) dict abort
|
||||||
let rev = self.rev()
|
let rev = self.rev()
|
||||||
let c = a:0 ? a:1 : 1
|
let c = a:0 ? a:1 : 1
|
||||||
@ -856,7 +826,7 @@ function! s:buffer_up(...) dict abort
|
|||||||
return rev
|
return rev
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call s:add_methods('buffer',['getvar','setvar','getline','repo','type','spec','name','commit','path','relative','rev','sha1','expand','containing_commit','up'])
|
call s:add_methods('buffer',['getvar','getline','repo','type','spec','name','commit','path','relative','rev','expand','up'])
|
||||||
|
|
||||||
" Section: Git
|
" Section: Git
|
||||||
|
|
||||||
@ -1963,28 +1933,28 @@ function! s:diffoff_all(dir) abort
|
|||||||
execute curwin.'wincmd w'
|
execute curwin.'wincmd w'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:buffer_compare_age(commit) dict abort
|
function! s:CompareAge(mine, theirs) abort
|
||||||
let scores = {':0': 1, ':1': 2, ':2': 3, ':': 4, ':3': 5}
|
let scores = {':0': 1, ':1': 2, ':2': 3, ':': 4, ':3': 5}
|
||||||
let my_score = get(scores, ':'.self.commit(), 0)
|
let mine = substitute(a:mine, '^:', '', '')
|
||||||
let their_score = get(scores, ':'.substitute(a:commit, '^:', '', ''), 0)
|
let theirs = substitute(a:theirs, '^:', '', '')
|
||||||
|
let my_score = get(scores, ':'.mine, 0)
|
||||||
|
let their_score = get(scores, ':'.theirs, 0)
|
||||||
if my_score || their_score
|
if my_score || their_score
|
||||||
return my_score < their_score ? -1 : my_score != their_score
|
return my_score < their_score ? -1 : my_score != their_score
|
||||||
elseif self.commit() ==# a:commit
|
elseif mine ==# theirs
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
let base = self.repo().git_chomp('merge-base',self.commit(),a:commit)
|
let base = s:repo().git_chomp('merge-base', mine, theirs)
|
||||||
if base ==# self.commit()
|
if base ==# mine
|
||||||
return -1
|
return -1
|
||||||
elseif base ==# a:commit
|
elseif base ==# theirs
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
let my_time = +self.repo().git_chomp('log','--max-count=1','--pretty=format:%at',self.commit())
|
let my_time = +s:repo().git_chomp('log','--max-count=1','--pretty=format:%at',a:mine)
|
||||||
let their_time = +self.repo().git_chomp('log','--max-count=1','--pretty=format:%at',a:commit)
|
let their_time = +s:repo().git_chomp('log','--max-count=1','--pretty=format:%at',a:theirs)
|
||||||
return my_time < their_time ? -1 : my_time != their_time
|
return my_time < their_time ? -1 : my_time != their_time
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call s:add_methods('buffer',['compare_age'])
|
|
||||||
|
|
||||||
function! s:Diff(vert,keepfocus,...) abort
|
function! s:Diff(vert,keepfocus,...) abort
|
||||||
let args = copy(a:000)
|
let args = copy(a:000)
|
||||||
let post = ''
|
let post = ''
|
||||||
@ -2041,7 +2011,7 @@ function! s:Diff(vert,keepfocus,...) abort
|
|||||||
setlocal cursorbind
|
setlocal cursorbind
|
||||||
endif
|
endif
|
||||||
let w:fugitive_diff_restore = restore
|
let w:fugitive_diff_restore = restore
|
||||||
if s:buffer().compare_age(s:DirCommitFile(spec)[1]) < 0
|
if s:CompareAge(s:buffer().commit(), s:DirCommitFile(spec)[1]) < 0
|
||||||
execute 'rightbelow '.vert.'diffsplit '.s:fnameescape(spec)
|
execute 'rightbelow '.vert.'diffsplit '.s:fnameescape(spec)
|
||||||
else
|
else
|
||||||
execute 'leftabove '.vert.'diffsplit '.s:fnameescape(spec)
|
execute 'leftabove '.vert.'diffsplit '.s:fnameescape(spec)
|
||||||
@ -2076,8 +2046,7 @@ function! s:Move(force, rename, destination) abort
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if isdirectory(s:buffer().spec())
|
if isdirectory(s:buffer().spec())
|
||||||
" Work around Vim parser idiosyncrasy
|
setlocal noswapfile
|
||||||
let discarded = s:buffer().setvar('&swapfile',0)
|
|
||||||
endif
|
endif
|
||||||
let message = call(s:repo().git_chomp_in_tree,['mv']+(a:force ? ['-f'] : [])+['--', s:buffer().relative(), destination], s:repo())
|
let message = call(s:repo().git_chomp_in_tree,['mv']+(a:force ? ['-f'] : [])+['--', s:buffer().relative(), destination], s:repo())
|
||||||
if v:shell_error
|
if v:shell_error
|
||||||
@ -2153,9 +2122,18 @@ augroup END
|
|||||||
|
|
||||||
" Section: Gblame
|
" Section: Gblame
|
||||||
|
|
||||||
|
function! s:Keywordprg() abort
|
||||||
|
let args = ' --git-dir='.escape(b:git_dir,"\\\"' ")
|
||||||
|
if has('gui_running') && !has('win32')
|
||||||
|
return s:git_command() . ' --no-pager' . args . ' log -1'
|
||||||
|
else
|
||||||
|
return s:git_command() . args . ' show'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
augroup fugitive_blame
|
augroup fugitive_blame
|
||||||
autocmd!
|
autocmd!
|
||||||
autocmd FileType fugitiveblame setlocal nomodeline | if exists('b:git_dir') | let &l:keywordprg = s:repo().keywordprg() | endif
|
autocmd FileType fugitiveblame setlocal nomodeline | if exists('b:git_dir') | let &l:keywordprg = s:Keywordprg() | endif
|
||||||
autocmd Syntax fugitiveblame call s:BlameSyntax()
|
autocmd Syntax fugitiveblame call s:BlameSyntax()
|
||||||
autocmd User Fugitive if s:buffer().type('file', 'blob', 'blame') | exe "command! -buffer -bar -bang -range=0 -nargs=* Gblame :execute s:Blame(<bang>0,<line1>,<line2>,<count>,[<f-args>])" | endif
|
autocmd User Fugitive if s:buffer().type('file', 'blob', 'blame') | exe "command! -buffer -bar -bang -range=0 -nargs=* Gblame :execute s:Blame(<bang>0,<line1>,<line2>,<count>,[<f-args>])" | endif
|
||||||
autocmd ColorScheme,GUIEnter * call s:RehighlightBlame()
|
autocmd ColorScheme,GUIEnter * call s:RehighlightBlame()
|
||||||
@ -2655,7 +2633,7 @@ function! s:instaweb_url(opts) abort
|
|||||||
call s:throw('fugitive: cannot browse uncommitted file')
|
call s:throw('fugitive: cannot browse uncommitted file')
|
||||||
endtry
|
endtry
|
||||||
endif
|
endif
|
||||||
let root .= ';hb=' . matchstr(a:opts.repo.head_ref(),'[^ ]\+$')
|
let root .= ';hb=' . a:opts.repo.head(-1)
|
||||||
endif
|
endif
|
||||||
if a:opts.path !=# ''
|
if a:opts.path !=# ''
|
||||||
let url .= ';f=' . a:opts.path
|
let url .= ';f=' . a:opts.path
|
||||||
@ -2996,6 +2974,15 @@ function! fugitive#MapCfile(...) abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:ContainingCommit() abort
|
||||||
|
let commit = s:DirCommitFile(@%)[1]
|
||||||
|
if commit =~# '^\d\=$'
|
||||||
|
return 'HEAD'
|
||||||
|
else
|
||||||
|
return commit
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! fugitive#MapJumps(...) abort
|
function! fugitive#MapJumps(...) abort
|
||||||
nnoremap <buffer> <silent> <CR> :<C-U>exe <SID>GF("edit")<CR>
|
nnoremap <buffer> <silent> <CR> :<C-U>exe <SID>GF("edit")<CR>
|
||||||
if !&modifiable
|
if !&modifiable
|
||||||
@ -3003,14 +2990,14 @@ function! fugitive#MapJumps(...) abort
|
|||||||
nnoremap <buffer> <silent> S :<C-U>exe <SID>GF("vsplit")<CR>
|
nnoremap <buffer> <silent> S :<C-U>exe <SID>GF("vsplit")<CR>
|
||||||
nnoremap <buffer> <silent> O :<C-U>exe <SID>GF("tabedit")<CR>
|
nnoremap <buffer> <silent> O :<C-U>exe <SID>GF("tabedit")<CR>
|
||||||
nnoremap <buffer> <silent> - :<C-U>exe <SID>Edit('edit',0,'',<SID>buffer().up(v:count1))<Bar> if fugitive#buffer().type('tree')<Bar>call search('^'.escape(expand('#:t'),'.*[]~\').'/\=$','wc')<Bar>endif<CR>
|
nnoremap <buffer> <silent> - :<C-U>exe <SID>Edit('edit',0,'',<SID>buffer().up(v:count1))<Bar> if fugitive#buffer().type('tree')<Bar>call search('^'.escape(expand('#:t'),'.*[]~\').'/\=$','wc')<Bar>endif<CR>
|
||||||
nnoremap <buffer> <silent> P :<C-U>exe <SID>Edit('edit',0,'',<SID>buffer().commit().'^'.v:count1.<SID>buffer().relative(':'))<CR>
|
nnoremap <buffer> <silent> P :<C-U>exe <SID>Edit('edit',0,'',<SID>ContainingCommit().'^'.v:count1.<SID>buffer().relative(':'))<CR>
|
||||||
nnoremap <buffer> <silent> ~ :<C-U>exe <SID>Edit('edit',0,'',<SID>buffer().commit().'~'.v:count1.<SID>buffer().relative(':'))<CR>
|
nnoremap <buffer> <silent> ~ :<C-U>exe <SID>Edit('edit',0,'',<SID>ContainingCommit().'~'.v:count1.<SID>buffer().relative(':'))<CR>
|
||||||
nnoremap <buffer> <silent> C :<C-U>exe <SID>Edit('edit',0,'',<SID>buffer().containing_commit())<CR>
|
nnoremap <buffer> <silent> C :<C-U>exe <SID>Edit('edit',0,'',<SID>ContainingCommit())<CR>
|
||||||
nnoremap <buffer> <silent> cc :<C-U>exe <SID>Edit('edit',0,'',<SID>buffer().containing_commit())<CR>
|
nnoremap <buffer> <silent> cc :<C-U>exe <SID>Edit('edit',0,'',<SID>ContainingCommit())<CR>
|
||||||
nnoremap <buffer> <silent> co :<C-U>exe <SID>Edit('split',0,'',<SID>buffer().containing_commit())<CR>
|
nnoremap <buffer> <silent> co :<C-U>exe <SID>Edit('split',0,'',<SID>ContainingCommit())<CR>
|
||||||
nnoremap <buffer> <silent> cS :<C-U>exe <SID>Edit('vsplit',0,'',<SID>buffer().containing_commit())<CR>
|
nnoremap <buffer> <silent> cS :<C-U>exe <SID>Edit('vsplit',0,'',<SID>ContainingCommit())<CR>
|
||||||
nnoremap <buffer> <silent> cO :<C-U>exe <SID>Edit('tabedit',0,'',<SID>buffer().containing_commit())<CR>
|
nnoremap <buffer> <silent> cO :<C-U>exe <SID>Edit('tabedit',0,'',<SID>ContainingCommit())<CR>
|
||||||
nnoremap <buffer> <silent> cP :<C-U>exe <SID>Edit('pedit',0,'',<SID>buffer().containing_commit())<CR>
|
nnoremap <buffer> <silent> cP :<C-U>exe <SID>Edit('pedit',0,'',<SID>ContainingCommit())<CR>
|
||||||
nnoremap <buffer> . : <C-R>=fnameescape(<SID>recall())<CR><Home>
|
nnoremap <buffer> . : <C-R>=fnameescape(<SID>recall())<CR><Home>
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
@ -3018,7 +3005,12 @@ endfunction
|
|||||||
function! s:cfile() abort
|
function! s:cfile() abort
|
||||||
try
|
try
|
||||||
let buffer = s:buffer()
|
let buffer = s:buffer()
|
||||||
let myhash = buffer.sha1()
|
|
||||||
|
if buffer.spec() =~? '^fugitive:' || buffer.spec() =~# '\.git/refs/\|\.git/.*HEAD$'
|
||||||
|
let myhash = buffer.repo().rev_parse(buffer.rev())
|
||||||
|
else
|
||||||
|
let myhash = ''
|
||||||
|
endif
|
||||||
if myhash ==# '' && getline(1) =~# '^\%(commit\|tag\) \w'
|
if myhash ==# '' && getline(1) =~# '^\%(commit\|tag\) \w'
|
||||||
let myhash = matchstr(getline(1),'^\w\+ \zs\S\+')
|
let myhash = matchstr(getline(1),'^\w\+ \zs\S\+')
|
||||||
endif
|
endif
|
||||||
@ -3229,15 +3221,6 @@ endfunction
|
|||||||
|
|
||||||
" Section: Statusline
|
" Section: Statusline
|
||||||
|
|
||||||
function! s:repo_head_ref() dict abort
|
|
||||||
if !filereadable(self.dir('HEAD'))
|
|
||||||
return ''
|
|
||||||
endif
|
|
||||||
return readfile(self.dir('HEAD'))[0]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
call s:add_methods('repo',['head_ref'])
|
|
||||||
|
|
||||||
function! fugitive#Statusline(...) abort
|
function! fugitive#Statusline(...) abort
|
||||||
if !exists('b:git_dir')
|
if !exists('b:git_dir')
|
||||||
return ''
|
return ''
|
||||||
|
@ -132,10 +132,11 @@ function! FugitiveStatusline(...) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! FugitiveHead(...) abort
|
function! FugitiveHead(...) abort
|
||||||
if !exists('b:git_dir')
|
let dir = a:0 > 1 ? a:2 : get(b:, 'git_dir', '')
|
||||||
|
if empty(dir)
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
return fugitive#repo().head(a:0 ? a:1 : 0)
|
return fugitive#repo(dir).head(a:0 ? a:1 : 0)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! FugitivePath(...) abort
|
function! FugitivePath(...) abort
|
||||||
|
Loading…
Reference in New Issue
Block a user