Browse Source

Added add-zsh-hook support to themes

I added add-zsh-hook support to the themes that didn't have it already.
This allows the themes to co-exist with plugins and lib/termsupport.
Christian Höltje 12 years ago
parent
commit
5277a0ffaa
3 changed files with 25 additions and 15 deletions
  1. 5 2
      themes/apple.zsh-theme
  2. 16 12
      themes/jonathan.zsh-theme
  3. 4 1
      themes/kolo.zsh-theme

+ 5 - 2
themes/apple.zsh-theme

@@ -2,7 +2,7 @@ function toon {
   echo -n ""
 }
 
-get_git_dirty() { 
+get_git_dirty() {
   git diff --quiet || echo '*'
 }
 
@@ -18,9 +18,12 @@ zstyle ':vcs_info:*' formats       \
 zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'
 zstyle ':vcs_info:*' enable git cvs svn
 
-precmd () {
+theme_precmd () {
     vcs_info
 }
 
 setopt prompt_subst
 PROMPT='%{$fg[magenta]%}$(toon)%{$reset_color%} %~/ %{$reset_color%}${vcs_info_msg_0_}%{$reset_color%}'
+
+autoload -U add-zsh-hook
+add-zsh-hook precmd theme_precmd

+ 16 - 12
themes/jonathan.zsh-theme

@@ -1,19 +1,19 @@
-function precmd {
+function theme_precmd {
     local TERMWIDTH
     (( TERMWIDTH = ${COLUMNS} - 1 ))
 
 
     ###
     # Truncate the path if it's too long.
-    
+
     PR_FILLBAR=""
     PR_PWDLEN=""
-    
+
     local promptsize=${#${(%):---(%n@%m:%l)---()--}}
     local rubyprompt=`rvm_prompt_info`
     local rubypromptsize=${#${rubyprompt}}
     local pwdsize=${#${(%):-%~}}
-    
+
     if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then
       ((PR_PWDLEN=$TERMWIDTH - $promptsize))
     else
@@ -24,7 +24,7 @@ function precmd {
 
 
 setopt extended_glob
-preexec () {
+theme_preexec () {
     if [[ "$TERM" == "screen" ]]; then
 	local CMD=${1[(wr)^(*=*|sudo|-*)]}
 	echo -n "\ek$CMD\e\\"
@@ -69,7 +69,7 @@ setprompt () {
 
     ###
     # See if we can use extended characters to look nicer.
-    
+
     typeset -A altchar
     set -A altchar ${(s..)terminfo[acsc]}
     PR_SET_CHARSET="%{$terminfo[enacs]%}"
@@ -81,10 +81,10 @@ setprompt () {
     PR_LRCORNER=${altchar[j]:--}
     PR_URCORNER=${altchar[k]:--}
 
-    
+
     ###
     # Decide if we need to set titlebar text.
-    
+
     case $TERM in
 	xterm*)
 	    PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
@@ -96,8 +96,8 @@ setprompt () {
 	    PR_TITLEBAR=''
 	    ;;
     esac
-    
-    
+
+
     ###
     # Decide whether to set a screen title
     if [[ "$TERM" == "screen" ]]; then
@@ -105,8 +105,8 @@ setprompt () {
     else
 	PR_STITLE=''
     fi
-    
-    
+
+
     ###
     # Finally, the prompt.
 
@@ -135,3 +135,7 @@ $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
 }
 
 setprompt
+
+autoload -U add-zsh-hook
+add-zsh-hook precmd  theme_precmd
+add-zsh-hook preexec theme_preexec

+ 4 - 1
themes/kolo.zsh-theme

@@ -7,7 +7,7 @@ zstyle ':vcs_info:*' unstagedstr '%F{yellow}●'
 zstyle ':vcs_info:*' check-for-changes true
 zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r'
 zstyle ':vcs_info:*' enable git svn
-precmd () {
+theme_precmd () {
     if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {
         zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]'
     } else {
@@ -19,3 +19,6 @@ precmd () {
 
 setopt prompt_subst
 PROMPT='%B%F{magenta}%c%B%F{green}${vcs_info_msg_0_}%B%F{magenta} %{$reset_color%}%% '
+
+autoload -U add-zsh-hook
+add-zsh-hook precmd  theme_precmd