@ -3,6 +3,7 @@
#
#
# Authors:
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
# Olaf Conradi <olaf@conradi.org>
#
#
# Return if requirements are not found.
# Return if requirements are not found.
@ -10,19 +11,12 @@ if [[ "$TERM" == (dumb|linux|*bsd*|eterm*) ]]; then
return 1
return 1
fi
fi
# Sets the terminal or terminal multiplexer window title.
# Sets the terminal window title.
function set-window-title {
function set-window-title {
local title_format{ ,ted}
local title_format{ ,ted}
zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format = "%s"
zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format = "%s"
zformat -f title_formatted " $title_format " " s: $argv "
zformat -f title_formatted " $title_format " " s: $argv "
printf '\e]2;%s\a' " ${ (V%)title_formatted } "
if [ [ " $TERM " = = screen* ] ] ; then
title_format = "\ek%s\e\\"
else
title_format = "\e]2;%s\a"
fi
printf " $title_format " " ${ (V%)title_formatted } "
}
}
# Sets the terminal tab title.
# Sets the terminal tab title.
@ -30,8 +24,15 @@ function set-tab-title {
local title_format{ ,ted}
local title_format{ ,ted}
zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format = "%s"
zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format = "%s"
zformat -f title_formatted " $title_format " " s: $argv "
zformat -f title_formatted " $title_format " " s: $argv "
printf '\e]1;%s\a' " ${ (V%)title_formatted } "
}
printf "\e]1;%s\a" ${ (V%)title_formatted }
# Sets the terminal multiplexer tab title.
function set-multiplexer-title {
local title_format{ ,ted}
zstyle -s ':prezto:module:terminal:multiplexer-title' format 'title_format' || title_format = "%s"
zformat -f title_formatted " $title_format " " s: $argv "
printf '\ek%s\e\\' " ${ (V%)title_formatted } "
}
}
# Sets the tab and window titles with a given command.
# Sets the tab and window titles with a given command.
@ -59,8 +60,11 @@ function _terminal-set-titles-with-command {
local truncated_cmd = " ${ cmd /(#m)?(#c15,)/ ${ MATCH [1,12] } ... } "
local truncated_cmd = " ${ cmd /(#m)?(#c15,)/ ${ MATCH [1,12] } ... } "
unset MATCH
unset MATCH
set-window-title " $cmd "
if [ [ " $TERM " = = screen* ] ] ; then
set-multiplexer-title " $truncated_cmd "
fi
set-tab-title " $truncated_cmd "
set-tab-title " $truncated_cmd "
set-window-title " $cmd "
fi
fi
}
}
@ -74,8 +78,11 @@ function _terminal-set-titles-with-path {
local truncated_path = " ${ abbreviated_path /(#m)?(#c15,)/... ${ MATCH [-12,-1] } } "
local truncated_path = " ${ abbreviated_path /(#m)?(#c15,)/... ${ MATCH [-12,-1] } } "
unset MATCH
unset MATCH
set-window-title " $abbreviated_path "
if [ [ " $TERM " = = screen* ] ] ; then
set-multiplexer-title " $truncated_path "
fi
set-tab-title " $truncated_path "
set-tab-title " $truncated_path "
set-window-title " $abbreviated_path "
}
}
# Do not override precmd/preexec; append to the hook array.
# Do not override precmd/preexec; append to the hook array.
@ -110,12 +117,13 @@ then
fi
fi
# Set up non-Apple terminals.
# Set up non-Apple terminals.
if zstyle -t ':prezto:module:terminal' auto-title \
if zstyle -t ':prezto:module:terminal' auto-title 'always' \
&& ( ! [ [ -n " $STY " || -n " $TMUX " ] ] )
|| ( zstyle -t ':prezto:module:terminal' auto-title \
&& ( ! [ [ -n " $STY " || -n " $TMUX " ] ] ) )
then
then
# Sets the tab and window t itles before the prompt is displayed.
# Sets titles before the prompt is displayed.
add-zsh-hook precmd _terminal-set-titles-with-path
add-zsh-hook precmd _terminal-set-titles-with-path
# Sets the tab and window t itles before command execution.
# Sets titles before command execution.
add-zsh-hook preexec _terminal-set-titles-with-command
add-zsh-hook preexec _terminal-set-titles-with-command
fi
fi