summaryrefslogtreecommitdiff
path: root/Functions/Zftp/zftp_chpwd
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-07-03 17:06:04 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-07-03 17:06:04 +0000
commit876fa2c44e0a17b2d10a2547ac1d13687cfed520 (patch)
treef92ce7475c97f82a05e20e9ba8be9b83436c9b6b /Functions/Zftp/zftp_chpwd
parent6fa964914d8be709b1145399108ef1535a0b3f39 (diff)
downloadzsh-876fa2c44e0a17b2d10a2547ac1d13687cfed520.tar.gz
zsh-876fa2c44e0a17b2d10a2547ac1d13687cfed520.zip
unposted: force latest version of files from vendor to main branch
Diffstat (limited to 'Functions/Zftp/zftp_chpwd')
-rw-r--r--Functions/Zftp/zftp_chpwd37
1 files changed, 20 insertions, 17 deletions
diff --git a/Functions/Zftp/zftp_chpwd b/Functions/Zftp/zftp_chpwd
index 0df199cfb..f661fa3ee 100644
--- a/Functions/Zftp/zftp_chpwd
+++ b/Functions/Zftp/zftp_chpwd
@@ -1,13 +1,16 @@
# function zftp_chpwd {
# You may want to alter chpwd to call this when $ZFTP_USER is set.
-# Cancel the filename cache for the current directory.
-zftp_fcache=()
-# ...and also empty the stored directory listing cache.
-# As this function is called when we close the connection, this
-# is the only place we need to do these two things.
-[[ -n $zfcurdir && -f $zfcurdir ]] && rm -f $zfcurdir
-zfotherargs=
+# If the directory really changed...
+if [[ $ZFTP_PWD != $zfconfig[lastdir_$ZFTP_SESSION] ]]; then
+ # ...and also empty the stored directory listing cache.
+ # As this function is called when we close the connection, this
+ # is the only place we need to do these two things.
+ local curdir=$zfconfig[curdir_$ZFTP_SESSION]
+ [[ -n $curdir && -f $curdir ]] && rm -f $curdir
+ zfconfig[otherargs_$ZFTP_SESSION]=
+ zffcache -d
+fi
if [[ -z $ZFTP_USER ]]; then
# last call, after an FTP logout
@@ -15,23 +18,23 @@ if [[ -z $ZFTP_USER ]]; then
# delete the non-current cached directory
[[ -n $zfotherdir && -f $zfotherdir ]] && rm -f $zfotherdir
- # don't keep zflastdir between opens (do keep zflastsession)
- zflastdir=
+ # don't keep lastdir between opens (do keep lastloc)
+ zfconfig[lastdir_$ZFTP_SESSION]=
# return the display to standard
- # uncomment the following line if you have a chpwd which shows directories
- # chpwd
+ zstyle -t ":zftp$curcontext" chpwd && chpwd
else
- [[ -n $ZFTP_PWD ]] && zflastdir=$ZFTP_PWD
- zflastsession="$ZFTP_HOST:$ZFTP_PWD"
+ [[ -n $ZFTP_PWD ]] && zfconfig[lastdir_$ZFTP_SESSION]=$ZFTP_PWD
+ zfconfig[lastloc_$ZFTP_SESSION]="$ZFTP_HOST:$ZFTP_PWD"
+ zfconfig[lastuser_$ZFTP_SESSION]="$ZFTP_USER"
local args
- if [[ -t 1 && -t 2 ]]; then
- local str=$zflastsession
+ if [[ -t 1 && -t 2 ]] && zstyle -t ":zftp$curcontext" titlebar; then
+ local str=$zfconfig[lastloc_$ZFTP_SESSION]
[[ ${#str} -lt 70 ]] && str="%m: %~ $str"
case $TERM in
- sun-cmd) print -n -P "\033]l$str\033\\"
+ sun-cmd) print -Pn "\033]l$str\033\\"
;;
- xterm) print -n -P "\033]2;$str\a"
+ *xterm*|rxvt|dtterm|Eterm|kterm) print -Pn "\033]2;$str\a"
;;
esac
fi