summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Adam <james@lazyatom.com>2009-10-20 06:24:21 +0800
committerRobby Russell <robby@planetargon.com>2009-11-09 07:14:52 +0800
commit14a1ce80bbf7362ab2856cdd050714f02649fe3f (patch)
tree01cc47e2eeea36c720701d139be8d8a3fb989071
parent83309294df29bba2deaac7a3412eacef5ee89691 (diff)
downloadzsh-14a1ce80bbf7362ab2856cdd050714f02649fe3f.tar.gz
zsh-14a1ce80bbf7362ab2856cdd050714f02649fe3f.tar.bz2
zsh-14a1ce80bbf7362ab2856cdd050714f02649fe3f.zip
Added my prompt theme, with a tweak to the core oh-my-zsh to support it. My git_prompt_info function not only reports the branch and dirty status, but also whether or not the branch is ahead or behind of the remote, or both. It also switches the prompt colour from green to red if the previous command exited with a non-zero value (i.e. failed).
-rw-r--r--lib/termsupport.zsh2
-rw-r--r--themes/lazyatom.zsh-theme40
2 files changed, 42 insertions, 0 deletions
diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index fef978748..ec828c287 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -4,6 +4,7 @@ case "$TERM" in
print -Pn "\e]0;%n@%m: $1\a" # xterm
}
precmd () {
+ oh_my_zsh_theme_precmd
print -Pn "\e]0;%n@%m: %~\a" # xterm
}
;;
@@ -14,6 +15,7 @@ case "$TERM" in
print -Pn "\e]0;%n@%m: $1\a" # xterm
}
precmd () {
+ oh_my_zsh_theme_precmd
echo -ne "\ekzsh\e\\"
print -Pn "\e]0;%n@%m: %~\a" # xterm
}
diff --git a/themes/lazyatom.zsh-theme b/themes/lazyatom.zsh-theme
new file mode 100644
index 000000000..6263bc2b7
--- /dev/null
+++ b/themes/lazyatom.zsh-theme
@@ -0,0 +1,40 @@
+git_prompt_info() {
+ branch=$(git symbolic-ref HEAD 2> /dev/null) || return
+ git_status="$(git status 2> /dev/null)"
+ state=""
+ case $git_status in
+ *Changed\ but\ not\ updated*)
+ state="%{$fg[red]%}⚡"
+ ;;;
+ *Untracked\ files*)
+ state="%{$fg[red]%}⚡"
+ ;;;
+ esac
+
+ remote=""
+ case $git_status in
+ *Your\ branch\ is\ ahead*)
+ remote="%{$fg[yellow]%}↑"
+ ;;;
+
+ *Your\ branch\ is\ behind*)
+ remote="%{$fg[yellow]%}↓"
+ ;;;
+
+ "Your branch and")
+ remote="%{$fg[yellow]%}"
+ ;;;
+ esac
+ echo " %{$fg[yellow]%}(${branch#refs/heads/})${remote}${state}"
+}
+
+function oh_my_zsh_theme_precmd() {
+ local previous_return_value=$?;
+ prompt="%{$fg[light_gray]%}%c%{$fg[yellow]%}$(git_prompt_info)%{$fg[white]%}"
+ if test $previous_return_value -eq 0
+ then
+ export PROMPT="%{$fg[green]%}➜ %{$fg[white]%}${prompt}%{$fg[green]%} $%{$fg[white]%} "
+ else
+ export PROMPT="%{$fg[red]%}➜ %{$fg[white]%}${prompt}%{$fg[red]%} $%{$fg[white]%} "
+ fi
+} \ No newline at end of file