motiejus/dotfiles

Unnamed repository; edit this file 'description' to name the repository.
git clone https://git.jakstys.lt/motiejus/dotfiles.git
Log | Tree | Refs | README | LICENSE

commit 43741b550de86abdbc2ba35645dba26296229cc2 (tree)
parent 765c921e1f0281963009b3e06a94227a8c0a2408
Author: Georgi Valkov <georgi.t.valkov@gmail.com>
Date:   Tue, 17 Apr 2012 22:28:11 +0300

Add fugitive#head() and fugitive#repo().head()

fugitive#head() returns the name of the current branch. If the current
HEAD is detached, fugitive#head() will return the empty string, unless
the optional 'len' argument is given, in which case the hash of the
current HEAD will be truncated to 'len' characters.

This makes should make life easier for people who don't want to use the
default provided by fugitive#statusline()

Diffstat:
Mdoc/fugitive.txt | 6++++++
Mplugin/fugitive.vim | 24+++++++++++++++++++++++-
2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/doc/fugitive.txt b/doc/fugitive.txt @@ -293,6 +293,12 @@ a statusline, this one matches the default when 'ruler' is set: > set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P < + *fugitive#head(...)* +Use fugitive#head() to return the name of the current branch. If the current +HEAD is detached, fugitive#head() will return the empty string, unless the +optional argument is given, in which case the hash of the current commit will +be truncated to the given number of characters. + ABOUT *fugitive-about* Grab the latest version or report a bug on GitHub: diff --git a/plugin/fugitive.vim b/plugin/fugitive.vim @@ -275,7 +275,21 @@ function! s:repo_translate(spec) dict abort endif endfunction -call s:add_methods('repo',['dir','configured_tree','tree','bare','translate']) +function! s:repo_head(...) dict abort + let head = s:repo().head_ref() + + if head =~# '^ref: ' + let branch = s:sub(head,'^ref: %(refs/%(heads/|remotes/|tags/)=)=','') + elseif head =~# '^\x\{40\}$' + " truncate hash to a:1 characters if we're in detached head mode + let len = a:0 ? a:1 : 0 + let branch = len ? head[0:len-1] : '' + endif + + return branch +endfunction + +call s:add_methods('repo',['dir','configured_tree','tree','bare','translate','head']) function! s:repo_git_command(...) dict abort let git = g:fugitive_git_executable . ' --git-dir='.s:shellesc(self.git_dir) @@ -2386,6 +2400,14 @@ function! fugitive#statusline(...) endif endfunction +function! fugitive#head(...) + if !exists('b:git_dir') + return '' + endif + + return s:repo().head(a:0 ? a:1 : 0) +endfunction + " }}}1 " Folding {{{1