Make airline aware of git worktrees

Currently vim-airline assumes, that the git_dir is part of the path for
the file being edited. This has changed, since git supports worktrees.

So take care of b:git_dir (which is set by fugitive) being a path
differently from the absolute path of the file being edited (however, it
should include the substring worktree in that case).
This commit is contained in:
Christian Brabandt 2016-11-23 16:30:02 +01:00
parent 3ebd7ad64b
commit d4a239f14a
1 changed files with 7 additions and 1 deletions

View File

@ -351,7 +351,13 @@ function! s:check_in_path()
let root = expand(fnamemodify(root, ':h')) let root = expand(fnamemodify(root, ':h'))
else else
" else it's the newer format, and we need to guesstimate " else it's the newer format, and we need to guesstimate
let pattern = '\.git\(\\\|\/\)modules\(\\\|\/\)' " 1) check for worktrees
if match(root, 'worktrees') > -1
" worktree can be anywhere, so simply assume true here
return 1
endif
" 2) check for submodules
let pattern = '\.git[\\/]\(modules\)[\\/]'
if match(root, pattern) >= 0 if match(root, pattern) >= 0
let root = substitute(root, pattern, '', '') let root = substitute(root, pattern, '', '')
endif endif