mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-18 21:14:11 +01:00
44 lines
850 B
Plaintext
44 lines
850 B
Plaintext
# Rename session OLD (defaults to current session) to session NEW.
|
|
# Does not handle aliases; use tcp_alias for all alias redefinitions.
|
|
|
|
local old new
|
|
|
|
if (( $# == 1 )); then
|
|
old=$TCP_SESS
|
|
new=$1
|
|
elif (( $# == 2 )); then
|
|
old=$1
|
|
new=$2
|
|
else
|
|
print "Usage: $0 OLD NEW" >&2
|
|
return 1
|
|
fi
|
|
|
|
local fd=$tcp_by_name[$old]
|
|
if [[ -z $fd ]]; then
|
|
print "No such session: $old" >&2
|
|
return 1
|
|
fi
|
|
if [[ -n $tcp_by_name[$new] ]]; then
|
|
print "Session $new already exists." >&2
|
|
return 1
|
|
fi
|
|
# Can't rename an alias
|
|
if [[ $tcp_by_fd[$fd] != $old ]]; then
|
|
print "Use tcp_alias to redefine an alias." >&2
|
|
return 1
|
|
fi
|
|
|
|
tcp_by_name[$new]=$fd
|
|
unset "tcp_by_name[$old]"
|
|
|
|
tcp_by_fd[$fd]=$new
|
|
|
|
[[ $TCP_SESS = $old ]] && TCP_SESS=$new
|
|
|
|
if zmodload -i zsh/parameter; then
|
|
if (( ${+functions[tcp_on_rename]} )); then
|
|
tcp_on_rename $new $fd $old
|
|
fi
|
|
fi
|