|
@@ -0,0 +1,42 @@
|
|
|
|
|
+# vim:ft=zsh ts=2 sw=2 sts=2
|
|
|
|
|
+# first approach to simple template using some functions from agnoster theme
|
|
|
|
|
+
|
|
|
|
|
+# Git: branch/detached head, dirty status
|
|
|
|
|
+prompt_git() {
|
|
|
|
|
+ local ref dirty mode repo_path
|
|
|
|
|
+ repo_path=$(git rev-parse --git-dir 2>/dev/null)
|
|
|
|
|
+
|
|
|
|
|
+ if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
|
|
|
|
|
+ dirty=$(parse_git_dirty)
|
|
|
|
|
+ ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
|
|
|
|
|
+ if [[ -n $dirty ]]; then
|
|
|
|
|
+ prompt_segment yellow black
|
|
|
|
|
+ else
|
|
|
|
|
+ prompt_segment green black
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ if [[ -e "${repo_path}/BISECT_LOG" ]]; then
|
|
|
|
|
+ mode=" <B>"
|
|
|
|
|
+ elif [[ -e "${repo_path}/MERGE_HEAD" ]]; then
|
|
|
|
|
+ mode=" >M<"
|
|
|
|
|
+ elif [[ -e "${repo_path}/rebase" || -e "${repo_path}/rebase-apply" || -e "${repo_path}/rebase-merge" || -e "${repo_path}/../.dotest" ]]; then
|
|
|
|
|
+ mode=" >R>"
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ setopt promptsubst
|
|
|
|
|
+ autoload -Uz vcs_info
|
|
|
|
|
+
|
|
|
|
|
+ zstyle ':vcs_info:*' enable git
|
|
|
|
|
+ zstyle ':vcs_info:*' get-revision true
|
|
|
|
|
+ zstyle ':vcs_info:*' check-for-changes true
|
|
|
|
|
+ zstyle ':vcs_info:*' stagedstr '✚'
|
|
|
|
|
+ zstyle ':vcs_info:git:*' unstagedstr '●'
|
|
|
|
|
+ zstyle ':vcs_info:*' formats ' %u%c'
|
|
|
|
|
+ zstyle ':vcs_info:*' actionformats ' %u%c'
|
|
|
|
|
+ vcs_info
|
|
|
|
|
+ echo -n "${ref/refs\/heads\// }${vcs_info_msg_0_%% }${mode}"
|
|
|
|
|
+ fi
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+PROMPT='[%~] '
|
|
|
|
|
+RPROMPT='[$(prompt_git)]'
|