This commit is contained in:
@@ -7,8 +7,7 @@ z-time() {
|
||||
"$@" ; r=$?
|
||||
a=$[ EPOCHREALTIME - a ]
|
||||
a=$(z-ts-to-human "$a" 6)
|
||||
echo >&2
|
||||
echo "time took: $a" >&2
|
||||
printf '\n# time took: %s\n' "$a" >&2
|
||||
|
||||
return $r
|
||||
}
|
||||
@@ -49,5 +48,7 @@ add-zsh-hook precmd __z_cmdtime_measure
|
||||
add-zsh-hook preexec __z_cmdtime_set
|
||||
|
||||
else
|
||||
echo "cmd time measurement is disabled due to missing hook support" >&2
|
||||
|
||||
echo "cmd time measurement is disabled due to missing hook support" >&2
|
||||
|
||||
fi
|
||||
|
@@ -47,5 +47,7 @@ __z_pwd_hook() {
|
||||
add-zsh-hook precmd __z_pwd_hook
|
||||
|
||||
else
|
||||
echo "shiny pwd's are disabled due to missing hook support" >&2
|
||||
|
||||
echo "shiny pwd's are disabled due to missing hook support" >&2
|
||||
|
||||
fi
|
||||
|
@@ -1,5 +1,6 @@
|
||||
#!/bin/zsh
|
||||
|
||||
typeset -gA ZSHU_TERM
|
||||
typeset -Uga ZSHU_TERM_MISSING
|
||||
|
||||
z-ti-test() {
|
||||
@@ -16,3 +17,136 @@ z-ti-test() {
|
||||
|
||||
return $r
|
||||
}
|
||||
|
||||
case "${TERM}" in
|
||||
xterm* | putty* | rxvt* | konsole* | mlterm* | alacritty* | foot* | contour* )
|
||||
ZSHU_TERM[has_title_tab]=1
|
||||
ZSHU_TERM[has_title_wnd]=1
|
||||
ZSHU_TERM[want_cwd]=1
|
||||
|
||||
ZSHU_TERM[title_tab]=term
|
||||
ZSHU_TERM[title_wnd]=term
|
||||
;;
|
||||
st* | wezterm* )
|
||||
ZSHU_TERM[has_title_tab]=1
|
||||
ZSHU_TERM[has_title_wnd]=1
|
||||
|
||||
ZSHU_TERM[title_tab]=term
|
||||
ZSHU_TERM[title_wnd]=term
|
||||
;;
|
||||
cygwin | ansi )
|
||||
ZSHU_TERM[has_title_tab]=1
|
||||
ZSHU_TERM[has_title_wnd]=1
|
||||
|
||||
ZSHU_TERM[title_tab]=term
|
||||
ZSHU_TERM[title_wnd]=term
|
||||
;;
|
||||
screen* | tmux* )
|
||||
ZSHU_TERM[has_title_tab]=1
|
||||
ZSHU_TERM[want_cwd]=1
|
||||
|
||||
ZSHU_TERM[title_tab]=mux
|
||||
;;
|
||||
* )
|
||||
if z-ti-test fsl tsl ; then
|
||||
ZSHU_TERM[has_title_tab]=1
|
||||
ZSHU_TERM[want_cwd]=1
|
||||
|
||||
ZSHU_TERM[title_tab]=terminfo
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
z-term-title-tab() {
|
||||
# [ "${ZSHU_TERM[has_title_tab]}" = 1 ] || return 1
|
||||
|
||||
case "${ZSHU_TERM[title_tab]:-}" in
|
||||
term )
|
||||
print -Pn "\e]1;${1:q}\a"
|
||||
;;
|
||||
mux )
|
||||
## screen/tmux: hardstatus
|
||||
print -Pn "\ek${1:q}\e\\"
|
||||
;;
|
||||
terminfo )
|
||||
echoti tsl
|
||||
print -Pn "$1"
|
||||
echoti fsl
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
z-term-title-window() {
|
||||
# [ "${ZSHU_TERM[has_title_wnd]}" = 1 ] || return 1
|
||||
|
||||
case "${ZSHU_TERM[title_wnd]:-}" in
|
||||
term )
|
||||
print -Pn "\e]2;${1:q}\a"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
z-term-title() {
|
||||
## if $2 is unset use $1 as default
|
||||
## if it is set and empty, leave it as is
|
||||
: ${2=$1}
|
||||
|
||||
z-term-title-tab "$1"
|
||||
z-term-title-window "$2"
|
||||
}
|
||||
|
||||
z-term-cwd() {
|
||||
[ "${ZSHU_TERM[want_cwd]}" = 1 ] || return 1
|
||||
|
||||
local host path
|
||||
host=${HOST:-localhost}
|
||||
path=${PWD}
|
||||
|
||||
## Konsole doesn't want ${host}
|
||||
while : ; do
|
||||
[ -n "${KONSOLE_DBUS_SERVICE}" ] || break
|
||||
[ -n "${KONSOLE_DBUS_SESSION}" ] || break
|
||||
[ -n "${KONSOLE_DBUS_WINDOW}" ] || break
|
||||
[ -n "${KONSOLE_PROFILE_NAME}" ] || break
|
||||
host=
|
||||
break ; done
|
||||
|
||||
printf "\e]7;file://%s%s\e\\" "${host}" "${path}"
|
||||
}
|
||||
|
||||
if autoload -Uz add-zsh-hook ; then
|
||||
|
||||
ZSHU[term_title]=1
|
||||
z-term-title-enable() { ZSHU[term_title]=1 ; }
|
||||
z-term-title-disable() { ZSHU[term_title]=0 ; }
|
||||
|
||||
ZSHU[title_tab]='%15<..<%~%<<'
|
||||
ZSHU[title_wnd]='%n@%m:%~'
|
||||
__z_term_title_precmd() {
|
||||
[ "${ZSHU[term_title]}" = 1 ] || return
|
||||
z-term-title "${ZSHU[title_tab]}" "${ZSHU[title_wnd]}"
|
||||
}
|
||||
add-zsh-hook precmd __z_term_title_precmd
|
||||
|
||||
ZSHU[term_cwd]=1
|
||||
z-term-cwd-enable() { ZSHU[term_cwd]=1 ; }
|
||||
z-term-cwd-disable() { ZSHU[term_cwd]=0 ; }
|
||||
|
||||
__z_term_cwd_precmd() {
|
||||
[ "${ZSHU[term_cwd]}" = 1 ] || return
|
||||
z-term-cwd
|
||||
}
|
||||
## "chpwd" doesn't always hook pwd changes
|
||||
add-zsh-hook precmd __z_term_cwd_precmd
|
||||
|
||||
else
|
||||
|
||||
echo "current working directory and tab/window title handling is disabled due to missing hook support" >&2
|
||||
|
||||
z-term-title-enable() { __z_unsupported ; }
|
||||
z-term-title-disable() { __z_unsupported ; }
|
||||
|
||||
z-term-cwd-enable() { __z_unsupported ; }
|
||||
z-term-cwd-disable() { __z_unsupported ; }
|
||||
|
||||
fi
|
||||
|
@@ -1,58 +0,0 @@
|
||||
#!/bin/zsh
|
||||
|
||||
ZSHU[title_tab]='%15<..<%~%<<'
|
||||
ZSHU[title_window]='%n@%m:%~'
|
||||
|
||||
z-title-tab() {
|
||||
emulate -L zsh
|
||||
|
||||
case "${TERM}" in
|
||||
cygwin | xterm* | putty* | rxvt* | konsole* | ansi | mlterm* | alacritty | st* )
|
||||
print -Pn "\e]1;${1:q}\a"
|
||||
;;
|
||||
screen* | tmux* )
|
||||
## hardstatus
|
||||
print -Pn "\ek${1:q}\e\\"
|
||||
;;
|
||||
* )
|
||||
z-ti-test fsl tsl || return
|
||||
|
||||
echoti tsl
|
||||
print -Pn "$1"
|
||||
echoti fsl
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
z-title-window() {
|
||||
emulate -L zsh
|
||||
|
||||
case "${TERM}" in
|
||||
cygwin | xterm* | putty* | rxvt* | konsole* | ansi | mlterm* | alacritty | st* )
|
||||
print -Pn "\e]2;${1:q}\a"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
z-title() {
|
||||
emulate -L zsh
|
||||
|
||||
## if $2 is unset use $1 as default
|
||||
## if it is set and empty, leave it as is
|
||||
: ${2=$1}
|
||||
|
||||
z-title-tab "$1"
|
||||
z-title-window "$2"
|
||||
}
|
||||
|
||||
if autoload -Uz add-zsh-hook ; then
|
||||
|
||||
__z_title_precmd() {
|
||||
z-title "${ZSHU[title_tab]}" "${ZSHU[title_window]}"
|
||||
}
|
||||
|
||||
add-zsh-hook precmd __z_title_precmd
|
||||
|
||||
else
|
||||
echo "tab/window title handling is disabled due to missing hook support" >&2
|
||||
fi
|
Reference in New Issue
Block a user