Merge pull request #706 from docwhat/termsupport-hook

lib/termsupport now uses add-zsh-hook
This commit is contained in:
Robby Russell 2011-12-14 21:52:42 -08:00
commit a9a0f58009
4 changed files with 32 additions and 18 deletions

View File

@ -4,7 +4,7 @@
#Limited support for Apple Terminal (Terminal can't set window or tab separately) #Limited support for Apple Terminal (Terminal can't set window or tab separately)
function title { function title {
[ "$DISABLE_AUTO_TITLE" != "true" ] || return [ "$DISABLE_AUTO_TITLE" != "true" ] || return
if [[ "$TERM" == screen* ]]; then if [[ "$TERM" == screen* ]]; then
print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars
elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
print -Pn "\e]2;$2:q\a" #set window name print -Pn "\e]2;$2:q\a" #set window name
@ -16,14 +16,18 @@ ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~"
#Appears when you have the prompt #Appears when you have the prompt
function precmd { function omz_termsupport_precmd {
title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
} }
#Appears at the beginning of (and during) of command execution #Appears at the beginning of (and during) of command execution
function preexec { function omz_termsupport_preexec {
emulate -L zsh emulate -L zsh
setopt extended_glob setopt extended_glob
local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
title "$CMD" "%100>...>$2%<<" title "$CMD" "%100>...>$2%<<"
} }
autoload -U add-zsh-hook
add-zsh-hook precmd omz_termsupport_precmd
add-zsh-hook preexec omz_termsupport_preexec

View File

@ -2,7 +2,7 @@ function toon {
echo -n "" echo -n ""
} }
get_git_dirty() { get_git_dirty() {
git diff --quiet || echo '*' 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:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'
zstyle ':vcs_info:*' enable git cvs svn zstyle ':vcs_info:*' enable git cvs svn
precmd () { theme_precmd () {
vcs_info vcs_info
} }
setopt prompt_subst setopt prompt_subst
PROMPT='%{$fg[magenta]%}$(toon)%{$reset_color%} %~/ %{$reset_color%}${vcs_info_msg_0_}%{$reset_color%}' 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

View File

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

View File

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