@ -32,10 +32,10 @@ function title {
# Try to use terminfo to set the title
# If the feature is available set title
if [ [ -n " $terminfo [fsl] " ] ] && [ [ -n " $terminfo [tsl] " ] ] ; then
echoti tsl
print -Pn " $1 "
echoti fsl
fi
echoti tsl
print -Pn " $1 "
echoti fsl
fi
fi
; ;
esac
@ -50,22 +50,52 @@ fi
# Runs before showing the prompt
function omz_termsupport_precmd {
emulate -L zsh
if [ [ " $DISABLE_AUTO_TITLE " = = true ] ] ; then
return
fi
[ [ " $DISABLE_AUTO_TITLE " = = true ] ] && return
title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
}
# Runs before executing the command
function omz_termsupport_preexec {
[ [ " $DISABLE_AUTO_TITLE " = = true ] ] && return
emulate -L zsh
setopt extended_glob
if [ [ " $DISABLE_AUTO_TITLE " = = true ] ] ; then
return
# split command into array of arguments
local -a cmdargs
cmdargs = ( " ${ (z)2 } " )
# if running fg, extract the command from the job description
if [ [ " ${ cmdargs [1] } " = fg ] ] ; then
# get the job id from the first argument passed to the fg command
local job_id jobspec = " ${ cmdargs [2]#% } "
# logic based on jobs arguments:
# http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs
# https://www.zsh.org/mla/users/2007/msg00704.html
case " $jobspec " in
<->) # %number argument:
# use the same <number> passed as an argument
job_id = ${ jobspec } ; ;
"" | %| +) # empty, %% or %+ argument:
# use the current job, which appears with a + in $jobstates:
# suspended:+:5071=suspended (tty output)
job_id = ${ (k)jobstates[(r)* : + : *] } ; ;
-) # %- argument:
# use the previous job, which appears with a - in $jobstates:
# suspended:-:6493=suspended (signal)
job_id = ${ (k)jobstates[(r)* :- : *] } ; ;
[ ?] *) # %?string argument:
# use $jobtexts to match for a job whose command *contains* <string>
job_id = ${ (k)jobtexts[(r)* ${ (Q)jobspec } *] } ; ;
*) # %string argument:
# use $jobtexts to match for a job whose command *starts with* <string>
job_id = ${ (k)jobtexts[(r) ${ (Q)jobspec } *] } ; ;
esac
# override preexec function arguments with job command
if [ [ -n " ${ jobtexts [ $job_id ] } " ] ] ; then
1 = " ${ jobtexts [ $job_id ] } "
2 = " ${ jobtexts [ $job_id ] } "
fi
fi
# cmd name only, or if this is sudo or ssh, the next cmd