about summary refs log tree commit diff
path: root/Completion/Unix/Command/_ssh
diff options
context:
space:
mode:
authorSimon Ruderich <rudi_s@users.sourceforge.net>2011-12-09 22:39:08 +0000
committerSimon Ruderich <rudi_s@users.sourceforge.net>2011-12-09 22:39:08 +0000
commitd374f2b1800d54d37a8e4c5299e824874a0489ed (patch)
tree5e3d67fa016e1cdc7890411fff2ad7590bd2b131 /Completion/Unix/Command/_ssh
parent3e1146677f48dbeb697c2744266454d14d5289bb (diff)
downloadzsh-d374f2b1800d54d37a8e4c5299e824874a0489ed.tar.gz
zsh-d374f2b1800d54d37a8e4c5299e824874a0489ed.tar.xz
zsh-d374f2b1800d54d37a8e4c5299e824874a0489ed.zip
29918: Completion: Add new _remote_files() helper and use it to reduce code duplication.
Diffstat (limited to 'Completion/Unix/Command/_ssh')
-rw-r--r--Completion/Unix/Command/_ssh38
1 files changed, 2 insertions, 36 deletions
diff --git a/Completion/Unix/Command/_ssh b/Completion/Unix/Command/_ssh
index bd23c3627..a6f2b40a2 100644
--- a/Completion/Unix/Command/_ssh
+++ b/Completion/Unix/Command/_ssh
@@ -5,40 +5,6 @@
 # TODO: update ssh-keygen (not based on 5.9)
 # TODO: sshd, ssh-keyscan, ssh-keysign
 
-
-_remote_files () {
-  # There should be coloring based on all the different ls -F classifiers.
-  local expl rempat remfiles remdispf remdispd args suf ret=1
-
-  if zstyle -T ":completion:${curcontext}:files" remote-access; then
-    zparseopts -D -E -a args p: 1 2 4 6 F:
-    if [[ -z $QIPREFIX ]]
-    then rempat="${PREFIX%%[^./][^/]#}\*"
-    else rempat="${(q)PREFIX%%[^./][^/]#}\*"
-    fi
-    remfiles=(${(M)${(f)"$(_call_program files ssh -o BatchMode=yes $args -a -x ${IPREFIX%:} ls -d1FL -- "$rempat" 2>/dev/null)"}%%[^/]#(|/)})
-    compset -P '*/'
-    compset -S '/*' || suf='remote file'
-
-    remdispf=(${remfiles:#*/})
-    remdispd=(${(M)remfiles:#*/})
-
-    _tags files
-    while _tags; do
-      while _next_label files expl ${suf:-remote directory}; do
-        [[ -n $suf ]] && compadd "$@" "$expl[@]" -d remdispf \
-            ${(q)remdispf%[*=@|]} && ret=0 
-        compadd ${suf:+-S/} "$@" "$expl[@]" -d remdispd \
-            ${(q)remdispd%/} && ret=0
-      done
-      (( ret )) || return 0
-    done
-    return ret
-  else
-    _message -e remote-files 'remote file'
-  fi
-}
-
 _ssh () {
   local curcontext="$curcontext" state line expl common tmp cmds suf ret=1
   typeset -A opt_args
@@ -386,7 +352,7 @@ _ssh () {
       ;;
     file)
       if compset -P '*:'; then
-        _remote_files ${(kv)~opt_args[(I)-[FP1246]]/-P/-p} && ret=0
+        _remote_files -- ssh ${(kv)~opt_args[(I)-[FP1246]]/-P/-p} && ret=0
       elif compset -P '*@'; then
         suf=( -S '' )
         compset -S ':*' || suf=( -r: -S: )
@@ -400,7 +366,7 @@ _ssh () {
       ;;
     rfile)
       if compset -P '*:'; then
-        _remote_files && ret=0
+        _remote_files -- ssh && ret=0
       elif compset -P '*@'; then
         _wanted hosts expl host _ssh_hosts -r: -S: && ret=0
       else