#! /usr/bin/zsh
-export __ZSH_GIT_BASEDIR=""
-export __ZSH_GIT_SUBDIR=""
-export __ZSH_GIT_BRANCH=""
-export __ZSH_GIT_ACTION=""
-export __ZSH_GIT_STATUS=""
-export __ZSH_GIT_VARS_INVALID=1
-export __ZSH_GIT_STATUS_INVALID=1
+__ZSH_GIT_BASEDIR=""
+__ZSH_GIT_SUBDIR=""
+__ZSH_GIT_BRANCH=""
+__ZSH_GIT_ACTION=""
+__ZSH_GIT_STATUS=""
+__ZSH_GIT_VARS_INVALID=1
+__ZSH_GIT_STATUS_INVALID=1
git_chpwd() {
# On cd, invalidate git status in prompt
- export __ZSH_GIT_VARS_INVALID=1
+ __ZSH_GIT_VARS_INVALID=1
}
# On git command, invalidate git status in prompt
case "$1" in
git*)
- export __ZSH_GIT_VARS_INVALID=1
+ __ZSH_GIT_VARS_INVALID=1
;;
esac
# *any* command could invalidate the repository status (new file, ...)
- export __ZSH_GIT_STATUS_INVALID=1
+ __ZSH_GIT_STATUS_INVALID=1
}
git_parse() {
- # psvar[3] == current action (merge, rebase, ...)
- # psvar[4] == current branch
- # psvar[5] == repository base directory
- # psvar[6] == current subdir into repository
- # psvar[7] == status (untracked, unstaged, staged)
+ # psvar[5] == current action (merge, rebase, ...)
+ # psvar[6] == current branch
+ # psvar[7] == repository base directory
+ # psvar[8] == current subdir into repository
+ # psvar[9] == status (untracked, unstaged, staged)
local git_dir ref base_dir sub_dir action branch gitstat gitstatus
if [[ "${__ZSH_GIT_VARS_INVALID}" == "0" && "${__ZSH_GIT_STATUS_INVALID}" == "0" ]]; then
# reuse previous values
- psvar[3]=${__ZSH_GIT_ACTION}
- psvar[4]=${__ZSH_GIT_BRANCH}
- psvar[5]=${__ZSH_GIT_BASEDIR}
- psvar[6]=${__ZSH_GIT_SUBDIR}
- psvar[7]=${__ZSH_GIT_STATUS}
+ psvar[5]=${__ZSH_GIT_ACTION}
+ psvar[6]=${__ZSH_GIT_BRANCH}
+ psvar[7]=${__ZSH_GIT_BASEDIR}
+ psvar[8]=${__ZSH_GIT_SUBDIR}
+ psvar[9]=${__ZSH_GIT_STATUS}
return
fi
if [[ "${__ZSH_GIT_VARS_INVALID}" == "0" && "${__ZSH_GIT_STATUS_INVALID}" == "1" ]]; then
# reuse previous values
- psvar[3]=${__ZSH_GIT_ACTION}
- psvar[4]=${__ZSH_GIT_BRANCH}
- psvar[5]=${__ZSH_GIT_BASEDIR}
- psvar[6]=${__ZSH_GIT_SUBDIR}
+ psvar[5]=${__ZSH_GIT_ACTION}
+ psvar[6]=${__ZSH_GIT_BRANCH}
+ psvar[7]=${__ZSH_GIT_BASEDIR}
+ psvar[8]=${__ZSH_GIT_SUBDIR}
- export __ZSH_GIT_STATUS=$(git_get_status)
- psvar[7]=${__ZSH_GIT_STATUS}
+ __ZSH_GIT_STATUS=$(git_get_status)
+ psvar[9]=${__ZSH_GIT_STATUS}
- export __ZSH_GIT_STATUS_INVALID=0
+ __ZSH_GIT_STATUS_INVALID=0
return
fi
gitstatus=`git_get_status`
# Got here, we're in git
- psvar[3]=${action}
- psvar[4]=${branch#refs/heads/}
- psvar[5]=${base_dir}
- psvar[6]=${sub_dir}
- psvar[7]=${gitstatus}
+ psvar[5]=${action}
+ psvar[6]=${branch#refs/heads/}
+ psvar[7]=${base_dir}
+ psvar[8]=${sub_dir}
+ psvar[9]=${gitstatus}
# Save for next time
- export __ZSH_GIT_BASEDIR="${base_dir}"
- export __ZSH_GIT_SUBDIR="${sub_dir}"
- export __ZSH_GIT_BRANCH="${branch#refs/heads/}"
- export __ZSH_GIT_ACTION="${action}"
- export __ZSH_GIT_STATUS="${gitstatus}"
-
- export __ZSH_GIT_VARS_INVALID=0
- export __ZSH_GIT_STATUS_INVALID=0
+ __ZSH_GIT_BASEDIR="${base_dir}"
+ __ZSH_GIT_SUBDIR="${sub_dir}"
+ __ZSH_GIT_BRANCH="${branch#refs/heads/}"
+ __ZSH_GIT_ACTION="${action}"
+ __ZSH_GIT_STATUS="${gitstatus}"
+
+ __ZSH_GIT_VARS_INVALID=0
+ __ZSH_GIT_STATUS_INVALID=0
}