diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2001-06-14 19:58:27 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2001-06-14 19:58:27 +0000 |
commit | 87db19092061d3489ea2550ba1f54376d165b07a (patch) | |
tree | 5ba0b1dd35dd2fa234a5c00fc0af132369e019fb | |
parent | d247b7f14664f234802bdc2c205ad510e4e400d4 (diff) | |
download | zsh-87db19092061d3489ea2550ba1f54376d165b07a.tar.gz zsh-87db19092061d3489ea2550ba1f54376d165b07a.tar.xz zsh-87db19092061d3489ea2550ba1f54376d165b07a.zip |
Load tcp module, zfcd_match, zfget_match where necessary.
-rw-r--r-- | Completion/Zsh/Command/_zftp | 2 | ||||
-rw-r--r-- | Functions/Zftp/zfinit | 55 |
2 files changed, 51 insertions, 6 deletions
diff --git a/Completion/Zsh/Command/_zftp b/Completion/Zsh/Command/_zftp index ca6c59fec..9c1488fc3 100644 --- a/Completion/Zsh/Command/_zftp +++ b/Completion/Zsh/Command/_zftp @@ -28,11 +28,13 @@ fi case $subcom in *(cd|ls|dir)) # complete remote directories + [[ -z ${functions[zfcd_match]} ]] && autoload -U zfcd_match _tags directories && zfcd_match $PREFIX $SUFFIX ;; *(get(|at)|gcp|delete|remote)) # complete remote files + [[ -z ${functions[zfget_match]} ]] && autoload -U zfget_match _tags files && zfget_match $PREFIX $SUFFIX ;; 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 |