about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Completion/Unix/Command/_ssh19
-rw-r--r--Completion/Zsh/Command/_setopt5
2 files changed, 18 insertions, 6 deletions
diff --git a/Completion/Unix/Command/_ssh b/Completion/Unix/Command/_ssh
index c2514a1a7..a66702a65 100644
--- a/Completion/Unix/Command/_ssh
+++ b/Completion/Unix/Command/_ssh
@@ -1,6 +1,6 @@
 #compdef ssh slogin=ssh scp ssh-add ssh-agent ssh-keygen sftp ssh-copy-id
 
-# Completions currently based on OpenSSH 6.9 (released on 2015-06-30).
+# Completions currently based on OpenSSH 7.0 (released on 2015-08-11).
 #
 # TODO: update ssh-keygen (not based on 5.9)
 # TODO: sshd, ssh-keyscan, ssh-keysign
@@ -39,8 +39,10 @@ _ssh () {
       '(-P)-b+[specify interface to transmit on]:bind address:_bind_addresses' \
       '-D+[specify a dynamic port forwarding]:dynamic port forwarding:->dynforward' \
       '-e+[set escape character]:escape character (or `none'\''):' \
+      '-E[append log output to file instead of stderr]:_files' \
       '(-n)-f[go to background]' \
       '-g[allow remote hosts to connect to local forwarded ports]' \
+      '-G[output configuration and exit]' \
       '-I+[specify smartcard device]:device:_files' \
       '-K[enable GSSAPI-based authentication and forwarding]' \
       '-k[disable forwarding of GSSAPI credentials]' \
@@ -56,11 +58,12 @@ _ssh () {
       '(-v)*-q[quiet operation]' \
       '*-R[specify remote port forwarding]:remote port forwarding:->forward' \
       '-S+[specify location of control socket for connection sharing]:path to control socket:_files' \
+      '-Q[query parameters]:parameter type:((cipher\:"supported symmetric ciphers" cipher-auth\:"supported symmetric ciphers that support authenticated encryption" mac\:"supported message integrity codes" kex\:"key exchange algorithms" key\:"key types" protocol-version\:"supported SSH protocol versions"))' \
       '(-1)-s[invoke subsystem]' \
       '(-1 -t)-T[disable pseudo-tty allocation (protocol version 2 only)]' \
       '(-T)-t[force pseudo-tty allocation]' \
       '-V[show version number]' \
-      '(-q)*-v[verbose mode]' \
+      '(-q)*-v[verbose mode (multiple increase verbosity, up to 3)]' \
       '-W[forward standard input and output to host]:stdinout forward:->hostport' \
       '-w[request tunnel device forwarding]:local_tun[\:remote_tun] (integer or "any"):' \
       '(-x -Y)-X[enable (untrusted) X11 forwarding]' \
@@ -147,7 +150,14 @@ _ssh () {
     case "$lstate" in
     option)
       if compset -P '*='; then
-        case "$IPREFIX" in
+        case "${IPREFIX#-o}" in
+          (#i)(ciphers|macs|kexalgorithms|hostkeyalgorithms|pubkeyacceptedkeytypes|hostbasedkeytypes)=)
+          if ! compset -P +; then
+            _wanted append expl 'append to default' compadd + && ret=0
+          fi
+          ;;
+        esac
+        case "${IPREFIX#-o}" in
         (#i)(afstokenpassing|batchmode|canonicalizefallbacklocal|challengeresponseauthentication|checkhostip|clearallforwardings|compression|enablesshkeysign|exitonforwardfailure|fallbacktorsh|forward(agent|x11)|forwardx11trusted|gatewayports|gssapiauthentication|gssapidelegatecredentials|gssapitrustdns|hashknownhosts|hostbasedauthentication|identitiesonly|kbdinteractiveauthentication|(tcp|)keepalive|nohostauthenticationforlocalhost|passwordauthentication|permitlocalcommand|proxyusefdpass|pubkeyauthentication|rhosts(|rsa)authentication|rsaauthentication|streamlocalbindunlink|usersh|kerberos(authentication|tgtpassing)|useprivilegedport|visualhostkey)=*)
           _wanted values expl 'truth value' compadd yes no && ret=0
           ;;
@@ -234,7 +244,7 @@ _ssh () {
         (#i)hostname=*)
           _wanted hosts expl 'real host name to log into' _ssh_hosts && ret=0
           ;;
-        (#i)(hostbasedkeytypes|hostkeyalgorithms)=*)
+        (#i)(hostbasedkeytypes|hostkeyalgorithms|pubkeyacceptedkeytypes)=*)
           _values -s , 'key types' \
               'ecdsa-sha2-nistp256-cert-v01@openssh.com' \
               'ecdsa-sha2-nistp384-cert-v01@openssh.com' \
@@ -450,6 +460,7 @@ _ssh () {
                 Protocol \
                 ProxyCommand \
                 ProxyUseFdpass \
+                PubkeyAcceptedKeyTypes \
                 PubkeyAuthentication \
                 RekeyLimit \
                 RemoteForward \
diff --git a/Completion/Zsh/Command/_setopt b/Completion/Zsh/Command/_setopt
index fb38d1da6..86c0965f9 100644
--- a/Completion/Zsh/Command/_setopt
+++ b/Completion/Zsh/Command/_setopt
@@ -2,8 +2,9 @@
 
 local expl ret=1
 local -a onopts offopts
-onopts=( ${(k)_comp_caller_options[(R)on]} )
-offopts=( ${(k)_comp_caller_options[(R)off]} )
+onopts=( ${(k)_comp_caller_options[(R)on]} printexitvalue )
+offopts=( ${(k)_comp_caller_options[(R)off]} printexitvalue )
+typeset -U onopts offopts
 case $service in
   setopt) onopts=(no$onopts) ;;
   unsetopt) offopts=(no$offopts) ;;