mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
# function zfcd_match {
 | 
						|
 | 
						|
emulate -L zsh
 | 
						|
 | 
						|
# see zfcd for details of this hack
 | 
						|
if [[ $1 = $HOME || $1 = $HOME/* ]]; then
 | 
						|
  1="~${1#$HOME}"
 | 
						|
fi
 | 
						|
 | 
						|
# error messages only
 | 
						|
local ZFTP_VERBOSE=45
 | 
						|
# should we redirect 2>/dev/null or let the user see it?
 | 
						|
 | 
						|
local tmpf=${TMPPREFIX}zfcm$$
 | 
						|
 | 
						|
if [[ $ZFTP_SYSTEM = UNIX* ]]; then
 | 
						|
  # hoo, aren't we lucky: this makes things so much easier
 | 
						|
  setopt rcexpandparam
 | 
						|
  local dir
 | 
						|
  if [[ $1 = ?*/* ]]; then
 | 
						|
    dir=${1%/*}
 | 
						|
  elif [[ $1 = /* ]]; then
 | 
						|
    dir=/
 | 
						|
  fi
 | 
						|
  # If we're using -F, we get away with using a directory
 | 
						|
  # to list, but not a glob.  Don't ask me why.
 | 
						|
  # I hate having to rely on awk here.
 | 
						|
  zftp ls -LF $dir >$tmpf
 | 
						|
  reply=($(awk '/\/$/ { print substr($1, 0, length($1)-1) }' $tmpf))
 | 
						|
  rm -f $tmpf
 | 
						|
  [[ -n $dir && $dir != */ ]] && dir="$dir/"
 | 
						|
  if [[ -n $WIDGET ]]; then
 | 
						|
    _loop directories expl 'remote directory' compadd -S/ -q -P "$dir" - $reply
 | 
						|
  elif [[ -n $dir ]]; then
 | 
						|
    reply=(${dir}$reply)
 | 
						|
  fi
 | 
						|
else
 | 
						|
  # I simply don't know what to do here.
 | 
						|
  # Just use the list of files for the current directory.
 | 
						|
  zfget_match $*
 | 
						|
fi
 | 
						|
 | 
						|
# }
 |