Fix stashes display

Changing directories while checking for untracked files broke
the display of git stashes. The hook was not called any more.
This is why we disabled checking for untracked files within a
.git folder.
pull/22/head
Dominik Ritter 6 years ago
parent 645b974677
commit a6e60def4b

@ -8,35 +8,19 @@
set_default POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY false set_default POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY false
function +vi-git-untracked() { function +vi-git-untracked() {
[[ -z "${vcs_comm[gitdir]}" ]] && return [[ -z "${vcs_comm[gitdir]}" || "${vcs_comm[gitdir]}" == "." ]] && return
# If we are in a .git folder, do not check for untracked files.
# If we are in a repos root folder, vcs_comm[gitdir] yields ".git". [[ "${PWD:A}" =~ "\.git/" ]] && return
# Inside the .git dir itself (and not a subdir of it) the variable
# yields ".". In any other case (either a subdirectory of .git or if [[ "$POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY" == "true" && "$(command git submodule foreach --quiet --recursive 'command git ls-files --others --exclude-standard')" != "" ]]; then
# the repo itself), the value of vcs_comm[gitdir] is the absolute
# path to the .git directory.
# Therefore we can step up a directory, if we are inside the .git
# folder. And in any other case, use the parent directory of the
# gitdir.
local repoDir="."
# Getting the parent dir of the current dir "." is still ".", so
# is is safe to do this always.
[[ "${vcs_comm[gitdir]}" != ".git" ]] && repoDir="${vcs_comm[gitdir]:h}"
[[ "${vcs_comm[gitdir]}" == "." ]] && repoDir=".."
if [[ "$POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY" == "true" && "$(cd ${repoDir} && command git submodule foreach --quiet --recursive 'command git ls-files --others --exclude-standard')" != "" ]]; then
hook_com[unstaged]+=" $(print_icon 'VCS_UNTRACKED_ICON')" hook_com[unstaged]+=" $(print_icon 'VCS_UNTRACKED_ICON')"
VCS_WORKDIR_HALF_DIRTY=true VCS_WORKDIR_HALF_DIRTY=true
elif [[ "$(cd ${repoDir} && command git ls-files --others --exclude-standard)" != "" ]]; then elif [[ "$(command git ls-files --others --exclude-standard)" != "" ]]; then
hook_com[unstaged]+=" $(print_icon 'VCS_UNTRACKED_ICON')" hook_com[unstaged]+=" $(print_icon 'VCS_UNTRACKED_ICON')"
VCS_WORKDIR_HALF_DIRTY=true VCS_WORKDIR_HALF_DIRTY=true
else else
VCS_WORKDIR_HALF_DIRTY=false VCS_WORKDIR_HALF_DIRTY=false
fi fi
# If we are in any other directory than the repo root, we want
# to go back a directory.
[[ "${vcs_comm[gitdir]}" != ".git" ]] && cd - >/dev/null
} }
function +vi-git-aheadbehind() { function +vi-git-aheadbehind() {

Loading…
Cancel
Save