|  | __fx_cp_remote_files() { | 
|  | local -a dirs files | 
|  | local -a remote_matches | 
|  | # ask dash on the device to glob the prefix | 
|  | remote_matches=($(fx shell echo "$PREFIX*/" "$PREFIX*")) | 
|  | # remove the unmatched globs | 
|  | remote_matches=(${remote_matches:#*\**}) | 
|  | # files don't have a trailing / | 
|  | files=(${remote_matches:#*/}) | 
|  | # directories have a trailing slash filter those and remove the slash | 
|  | dirs=(${${(M)remote_matches:#*/}%/}) | 
|  | # remove directory names from the files list | 
|  | files=(${files:|dirs}) | 
|  |  | 
|  | # we want to complete the next path component not the whole path | 
|  | compset -P '*/' | 
|  | compset -S '/*' | 
|  |  | 
|  | # add directories to completion | 
|  | compadd -S/ -d dirs -- ${dirs##*/} | 
|  | # add files to completion | 
|  | compadd -- ${files##*/} | 
|  | } | 
|  |  | 
|  | __fx_cp_src() { | 
|  | if [ -n "${words[(r)--to-host]}" ]; then | 
|  | __fx_cp_remote_files | 
|  | else | 
|  | _files | 
|  | fi | 
|  | } | 
|  |  | 
|  | __fx_cp_dest() { | 
|  | if [ -n "${words[(r)--to-host]}" ]; then | 
|  | _files | 
|  | else | 
|  | __fx_cp_remote_files | 
|  | fi | 
|  | } | 
|  |  | 
|  | _arguments \ | 
|  | '(--to-host)--to-target[Copy a file from the host to the target.]' \ | 
|  | '(--to-target)--to-host[Copy a file from the target to the host.]' \ | 
|  | '1:src:__fx_cp_src' \ | 
|  | '2:dest:__fx_cp_dest' \ | 
|  |  |