Add optional statusline indicator

This commit is contained in:
Tim Pope 2010-02-02 23:46:04 -05:00
parent 315eb92abd
commit a27c0fc633
2 changed files with 35 additions and 0 deletions

View File

@ -195,6 +195,15 @@ HEAD^:Makefile The file named Makefile in the parent of HEAD
:3 The current file in the merged branch during a conflict :3 The current file in the merged branch during a conflict
:/foo The most recent commit with "foo" in the message :/foo The most recent commit with "foo" in the message
STATUSLINE *fugitive-statusline*
*fugitive#statusline()*
Add %{fugitive#statusline()} to your statusline to get an indicator including
the current branch and the currently edited file's commit. If you don't have
a statusline, this one matches the default when 'ruler' is set:
>
set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
<
ABOUT *fugitive-about* ABOUT *fugitive-about*
Grab the latest version or report a bug on Github: Grab the latest version or report a bug on Github:

View File

@ -1608,6 +1608,32 @@ function! s:GF(mode) abort
endtry endtry
endfunction endfunction
" }}}1
" Statusline {{{1
function! s:repo_head_ref() dict abort
return readfile(s:repo().dir('HEAD'))[0]
endfunction
call s:add_methods('repo',['head_ref'])
function! fugitive#statusline(...)
if !exists('b:git_dir')
return ''
endif
let status = 'Git'
if s:buffer().commit() != ''
let status .= ':' . s:buffer().commit()[0:7]
endif
let head = s:repo().head_ref()
if head =~# '^ref: '
let status .= s:sub(head,'^ref: %(refs/%(heads/|remotes/|tags/)=)=','(').')'
elseif head =~# '^\x\{40\}$'
let status .= '('.head[0:7].')'
endif
return '['.status.']'
endfunction
" }}}1 " }}}1
" vim:set ft=vim ts=8 sw=2 sts=2: " vim:set ft=vim ts=8 sw=2 sts=2: