summaryrefslogtreecommitdiff
path: root/Functions/Zftp
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2001-06-14 19:58:27 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2001-06-14 19:58:27 +0000
commit87db19092061d3489ea2550ba1f54376d165b07a (patch)
tree5ba0b1dd35dd2fa234a5c00fc0af132369e019fb /Functions/Zftp
parentd247b7f14664f234802bdc2c205ad510e4e400d4 (diff)
downloadzsh-87db19092061d3489ea2550ba1f54376d165b07a.tar.gz
zsh-87db19092061d3489ea2550ba1f54376d165b07a.zip
Load tcp module, zfcd_match, zfget_match where necessary.
Diffstat (limited to 'Functions/Zftp')
-rw-r--r--Functions/Zftp/zfinit55
1 files changed, 49 insertions, 6 deletions
diff --git a/Functions/Zftp/zfinit b/Functions/Zftp/zfinit
index be827c6ac..663f1ff44 100644
--- a/Functions/Zftp/zfinit
+++ b/Functions/Zftp/zfinit
@@ -1,4 +1,23 @@
-[[ $1 = -n ]] || zmodload -ia zftp
+emulate -L zsh
+
+if [[ $1 != -n ]]; then
+ zmodload -i zsh/net/tcp || return 1
+ zmodload -ia zsh/zftp zftp || return 1
+fi
+
+if zmodload -i zsh/zutil; then
+ local arr
+ # Set defaults for styles if none set.
+ zstyle -g arr ':zftp:*' progress || zstyle ':zftp:*' progress bar
+ zstyle -g arr ':zftp:*' update || zstyle ':zftp:*' update 1
+ zstyle -g arr ':zftp:*' titlebar || zstyle ':zftp:*' titlebar true
+ if functions chpwd >&/dev/null && ! zstyle -g arr ':zftp:*' chpwd; then
+ zstyle ':zftp:*' chpwd true
+ fi
+
+ typeset -gA zfconfig
+ zfconfig=(lastsession default)
+fi
alias zfcd='noglob zfcd'
alias zfget='noglob zfget'
@@ -6,23 +25,47 @@ alias zfls='noglob zfls'
alias zfdir='noglob zfdir'
alias zfuget='noglob zfuget'
-# only way of getting that noglob out of the way: this is unnecessary with
-# widget-based completion and can be commented out.
-setopt completealiases
+autoload -U zfanon zfautocheck zfcd zfcd_match zfcget zfclose zfcput
+autoload -U zfdir zffcache zfgcp zfget zfget_match zfgoto zfhere zfinit zfls
+autoload -U zfmark zfopen zfparams zfpcp zfput zfrglob zfrtime zfsession
+autoload -U zfstat zftp_chpwd zftp_progress zftransfer zftype zfuget zfuput
#
# zftp completions: only use these if new-style completion is not
# active.
#
-if [[ ${#patcomps} -eq 0 || ${patcomps[(i)zf*]} -gt ${#patcomps} ]]; then
+if [[ ${#_patcomps} -eq 0 || -z ${_patcomps[(r)_zf*]} ]]; then
+ # only way of getting that noglob out of the way: this is unnecessary with
+ # widget-based completion
+ setopt completealiases
+
compctl -f -x 'p[1]' \
-k '(open params user login type ascii binary mode put putat
get getat append appendat ls dir local remote mkdir rmdir delete
close quit)' - \
'w[1,cd][1,ls][1,dir][1,rmdir]' -K zfcd_match -S/ -q - \
'W[1,get*]' -K zfget_match - 'w[1,delete][1,remote]' -K zfget_match - \
- 'w[1,open][1,params]' -k hosts -- zftp
+ 'w[1,open][1,params]' -k hosts - \
+ 'w[1,session]' -s '${$(zftp session):#$ZFTP_SESSION}' -- zftp
compctl -K zfcd_match -S/ -q zfcd zfdir zfls
compctl -K zfget_match zfget zfgcp zfuget zfcget
compctl -k hosts zfanon zfopen zfparams
+ compctl -s \
+ '$(awk '\''{print $1}'\'' ${ZFTP_BMFILE:-${ZDOTDIR:-$HOME}/.zfbkmarks})' \
+ -x 'W[1,-*n*]' \
+ -s '$(awk -F, '\''NR > 2 { print $1 }'\'' ~/.ncftp/bookmarks)' -- \
+ zfgoto zfmark
+ compctl -s '${$(zftp session):#$ZFTP_SESSION}' zfsession
+ # in _zftp for new completion, but hard to inline into a compctl
+ zftransfer_match() {
+ local sess=${1%%:*} oldsess=$ZFTP_SESSION
+ [[ -n $sess ]] && zftp session $sess
+ zfget_match ${1#*:} $2
+ [[ -n $sess && -n $oldsess ]] && zftp session $oldsess
+ reply=(${sess}:${^reply})
+ }
+ compctl -s '$(zftp session)' -S : -x 'C[0,*:*]' \
+ -K zftransfer_match -- zftransfer
fi
+
+return 0