zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: completion options update
@ 2018-08-28 21:16 Oliver Kiddle
  2018-08-30  2:30 ` dana
  0 siblings, 1 reply; 8+ messages in thread
From: Oliver Kiddle @ 2018-08-28 21:16 UTC (permalink / raw)
  To: Zsh workers

This is the latest installment of the usual completion options update
based on -h output comparisons. In particular, this covers changes due
to the FreeBSD 11.2 and NetBSD 8.0 releases.

Relevant versions are:
cryptsetup 2.0.4
network manager 1.12.2
strace 4.24
sysstat 12.0.1
attr 2.4.48
dig 9.11.4-P1
entr 4.1
gnutls 3.6.3
coreutils 8.30 - env, md5sum, route
NetBSD 8 - cmp, dhclient, iostat, ln, ps, sort
FreeBSD 11.2 - service, top, split

Oliver

diff --git a/Completion/Linux/Command/_cryptsetup b/Completion/Linux/Command/_cryptsetup
index 351859586..ddb2ad3a9 100644
--- a/Completion/Linux/Command/_cryptsetup
+++ b/Completion/Linux/Command/_cryptsetup
@@ -1,8 +1,9 @@
 #compdef cryptsetup
 
-local curcontext="$curcontext" ret=1
+local curcontext="$curcontext" ign ret=1
 local -a actions state line expl
 
+(( $#words > 2 )) && ign='!'
 _arguments -s \
   '(-v --verbose)'{-v,--verbose}'[enable verbose mode]' \
   '--debug[enable debug mode]' \
@@ -65,9 +66,10 @@ _arguments -s \
   '--label=[set label for the LUKS2 device]:label' \
   '--subsystem=[set subsystem label for the LUKS2 device]:subsystem' \
   '--unbound[create unbound (no assigned data segment) LUKS2 keyslot]' \
-  '(- : *)--version[show version information]' \
-  '(- : *)'{-\?,--help}'[display help information]' \
-  '(- : *)--usage[display brief usage]' \
+  '--json-file=[read or write token to json file]:json file:_files -g "*.json(-.)"' \
+  "${ign}(- : *)--version[show version information]" \
+  "${ign}(- : *)"{-\?,--help}'[display help information]' \
+  "${ign}(- : *)--usage[display brief usage]" \
   ':action:->actions' \
   '*::arguments:->action-arguments' && ret=0
 
@@ -97,6 +99,7 @@ case $state in
       'luksResume:resume suspended LUKS device'
       'luksHeaderBackup:store binary backup of headers'
       'luksHeaderRestore:restore header backup'
+      'token:manipulate auto-activation token of the device'
     )
     _describe action actions && ret=0
   ;;
@@ -118,6 +121,17 @@ case $state in
 	args=( $device ':key file:_files' )
       ;;
       luksHeader*) args=( $device '--header-backup-file:file:_files' );;
+      token)
+	args=(
+	  ':action:((
+	    add\:create\ a\ new\ keyring
+	    remove\:remove\ any\ token\ from\ slot
+	    import\:store\ arbitrary\ valid\ token\ json\ in\ LUKS2\ header
+	    export\:write\ requested\ token\ json\ to\ a\ file
+	  ))'
+	  $device
+	)
+      ;;
       *)
         _default && ret=0
       ;;
diff --git a/Completion/Linux/Command/_networkmanager b/Completion/Linux/Command/_networkmanager
index e38215e76..fa9301971 100644
--- a/Completion/Linux/Command/_networkmanager
+++ b/Completion/Linux/Command/_networkmanager
@@ -6,6 +6,7 @@ _networkmanager() {
   local curcontext="$curcontext" state line
 
   _arguments -C \
+    '(-o -overview)-o'{,verview}'[overview mode (hide default values)]' \
     '(-p -pretty -t -terse)-t'{,erse}'[terse output]' \
     '(-p -pretty -t -terse)-p'{,retty}'[pretty output]' \
     '(-m -mode)-m'{,ode}'[output mode]:mode:(tabular multiline)' \
diff --git a/Completion/Linux/Command/_strace b/Completion/Linux/Command/_strace
index cff9a49c6..83ccc6afb 100644
--- a/Completion/Linux/Command/_strace
+++ b/Completion/Linux/Command/_strace
@@ -54,7 +54,9 @@ case $state in
       'signal[trace only the specified subset of signals]:signal:_sequence _signals -s -M "B\:!="' \
       'read[perform a full hex and ASCII dump of all the data read from listed file descriptors]:file descriptor:_sequence _file_descriptors' \
       'write[perform a full hex and ASCII dump of all the data written to listed file descriptors]:file descriptor:_sequence _file_descriptors' \
-      'fault[perform syscall fault injection]:system call:_sys_calls -a -n' && ret=0
+      'fault[perform syscall fault injection]:system call:_sys_calls -a -n' \
+      'inject[perform syscall tampering]:system call:_sys_calls -a -n' \
+      'kvm[print the exit reason of kvm vcpu]: :(vcpu)' && ret=0
     if [[ $words[CURRENT] != *=* || $state = syscalls ]]; then
       local dedup sets suf="-qS,"
       compset -P '!'
diff --git a/Completion/Linux/Command/_sysstat b/Completion/Linux/Command/_sysstat
index 8b7929ddd..e091dd3ea 100644
--- a/Completion/Linux/Command/_sysstat
+++ b/Completion/Linux/Command/_sysstat
@@ -8,6 +8,7 @@ _mpstat() {
     '(-A)-I[report interrupt statistics]:interrupt:(SUM CPU SCPU ALL)' \
     '(-A)-N[specify NUMA nodes]:NUMA node' \
     '(-A)-n[report summary CPU statistics based on NUMA node placement]' \
+    '--dec=-[specify the number of decimal places to use]:decimal places [2]:(0 1 2)' \
     '-o[display statistics in JSON]:format:(JSON)' \
     '(-A)-P[specify processor number]:processor: _values -s "," processor ALL {0..$(_call_program processors getconf _NPROCESSORS_ONLN)}' \
     '-u[report CPU utilization]' \
@@ -18,6 +19,7 @@ _mpstat() {
 
 _cifsiostat() {
   _arguments : \
+    '--dec=-[specify the number of decimal places to use]:decimal places [2]:(0 1 2)' \
     '-h[human readable]' \
     '(-m)-k[display statistics in kB/s]' \
     '(-k)-m[display statistics in MB/s]' \
@@ -49,6 +51,9 @@ _sadf() {
       '-O[specify output options]: : _values -s , option
         autoscale height\:value oneday packed showidle showinfo skipempty showhints' \
       '-P[restrict processor dependant statistics]:processor number(zero indexed) or ALL:(ALL)' \
+      '--dev=-[specify block devices for which statistics are to be displayed]:block device:_files -g "*(-%)"' \
+      '--fs=-[specify filesystems for which statistics are to be displayed]:file system:_dir_list -s ,' \
+      '--iface=-[specify network interfaces for which statistics are to be displayed]:network interface:_sequence _net_interfaces' \
       '-s[set starting time of report]:starting time (HH\:MM\:SS)"' \
       '(-t -U)-T[display timestamp in local time]' \
       '(-T -U)-t[display timestamp in file\''s original localtime]' \
@@ -81,15 +86,19 @@ _sar() {
     '-C[display comments from sadc]' \
     '-D[use saYYYYMMDD instead of saDD as the standard system activity daily data file name]' \
     '-d[report activity for each block device]' \
+    '--dec=-[specify the number of decimal places to use]:decimal places [2]:(0 1 2)' \
+    '--dev=-[specify block devices for which statistics are to be displayed]:block device:_files -g "*(-%)"' \
     '-e[set ending time of report]:ending time (HH\:MM\:SS)' \
     '-F[display statistics for mounted filesystems]' \
     '-f[extract records from file]:record:_files' \
+    '--fs=-[specify filesystems for which statistics are to be displayed]:file system:_dir_list -s ,' \
     '-H[report hugepages utilization]' \
     '(--human -p)-h[make output easier to read: implies --human and -p]' \
     '(- 1 2)--help[display usage information]' \
     '--human[print sizes in human readable format]' \
     '*-I[report statistics for interrupts]:interrupts: _values -s "," interrupts 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SUM ALL XALL' \
     '-i[select records as close as possible to interval]:interval' \
+    '--iface=-[specify network interfaces for which statistics are to be displayed]:network interface:_sequence _net_interfaces' \
     '-j[display persistent device names]:type:(ID LABEL PATH UUID)' \
     '-m[report power management statistics]:keywords: _values -s "," keywords CPU FAN FREQ IN TEMP USB ALL' \
     '-n[report network statistics]:keywords: _values -s "," keywords DEV EDEV NFS NFSD SOCK IP EIP ICMP EICMP TCP ETCP UDP SOCK6 IP6 EIP6 ICMP6 EICMP6 UDP6 FC SOFT ALL' \
@@ -135,6 +144,7 @@ _pidstat() {
     '-v[display values from kernel table]' \
     '-w[report task switching activity]' \
     '-G[include only processes with specified name]:process name' \
+    '--dec=-[specify the number of decimal places to use]:decimal places [2]:(0 1 2)' \
     '--human[print sizes in human readable format]' \
     '1: : _guard "^-*" interval' \
     '2: : _guard "^-*" count'
diff --git a/Completion/Unix/Command/_attr b/Completion/Unix/Command/_attr
index 2030064dc..d8d4ed260 100644
--- a/Completion/Unix/Command/_attr
+++ b/Completion/Unix/Command/_attr
@@ -39,6 +39,7 @@ case $service in
       '(-v --value)'{-v+,--value=}'[specify value for the attribute]' \
       '(-x --remove)'{-x+,--remove=}'[remove specified extended attribute]' \
       '(-n --name -v --value)--restore[restore extended attributes from dump file]:dump file:_files' \
+      '--raw[attribute value is not encoded]' \
       '(-h --no-dereference)'{-h,--no-dereference}"[don't follow symbolic links]" \
       '(* -)--version[display version information]' \
       '(* -)--help[display help information]' \
diff --git a/Completion/Unix/Command/_cmp b/Completion/Unix/Command/_cmp
index bcede8b0b..6d7bfb1b7 100644
--- a/Completion/Unix/Command/_cmp
+++ b/Completion/Unix/Command/_cmp
@@ -15,6 +15,7 @@ case $variant in
       '(- *)--help[display help information]'
     )
   ;;
+  netbsd*) args+=( "-c[don't use mmap]" ) ;|
   freebsd*|openbsd*)
     args=(
       "-h[don't follow symbolic links]"
diff --git a/Completion/Unix/Command/_dhclient b/Completion/Unix/Command/_dhclient
index 57a5061c2..beaab5e2d 100644
--- a/Completion/Unix/Command/_dhclient
+++ b/Completion/Unix/Command/_dhclient
@@ -54,6 +54,7 @@ case $OSTYPE in
       '(--no-pid)-pf[pid file]:pid file:_files'
       '(-pf)--no-pid[disable writing pid files]'
       '-cf[config file]:config file:_files'
+      '-df[duid file]:duid file:_files'
       '-sf[script file]:script file:_files'
       '-4o6[DHCPv4  over DHCPv6 protocol]:port'
       "-nc[don't drop capabilities]"
diff --git a/Completion/Unix/Command/_dig b/Completion/Unix/Command/_dig
index 5feb71fef..18e9a0dbd 100644
--- a/Completion/Unix/Command/_dig
+++ b/Completion/Unix/Command/_dig
@@ -26,6 +26,7 @@ local -a alts args
   '*+noedns[clear EDNS options to be sent]'
   '*+'{no,}'expire[send an EDNS Expire option]'
   '*+'{no,}'header-only[send query without a question section]'
+  '*+'{no,}'idnin[set processing of IDN domain names on input]'
   '*+'{no,}'idnout[set conversion of IDN puny code on output]'
   '*+'{no,}'keepopen[keep TCP socket open between queries]'
   '*+'{no,}'mapped[allow mapped IPv4 over IPv6 to be used]'
diff --git a/Completion/Unix/Command/_entr b/Completion/Unix/Command/_entr
index a8d43fc5e..e1ba7cf2b 100644
--- a/Completion/Unix/Command/_entr
+++ b/Completion/Unix/Command/_entr
@@ -6,6 +6,7 @@ typeset -A opt_args
 _arguments -s -S \
   '-c[execute clear before invoking utility]' \
   '-d[track directories and exit if a new file is added]' \
+  "-n[non-interactive mode; don't access TTY]" \
   '-p[postpone first execution of the utility]' \
   '-r[reload a persistent child process]' \
   '(*)-s[evaluate the first argument using interpreter specified by $SHELL]' \
diff --git a/Completion/Unix/Command/_env b/Completion/Unix/Command/_env
index 96e96bd7b..99fc513d7 100644
--- a/Completion/Unix/Command/_env
+++ b/Completion/Unix/Command/_env
@@ -1,16 +1,19 @@
 #compdef env genv
 
-local context state line variant args ret=1
+local context state line variant args ign ret=1
 
 _pick_variant -r variant gnu=Free\ Soft $OSTYPE --version
 case $variant in
   gnu)
+    (( $#words > 2 )) && ign='!'
     args=(
       '(-)'{-i,--ignore-environment}'[start with empty environment]'
       '(--ignore-environment -i --help --version)*'{-u+,--unset=}'[remove variable from the environment]:env var to remove:_parameters -g "*export*"'
       '(-C --chdir)'{-C+,--chdir=}'[change working directory]:directory:_directories'
-      '(- *)--help[display help information]'
-      '(- *)--version[display version information]'
+      '(-S --split-string)'{-S+,--split-string=}'[perform word splitting]:string to split'
+      '(-v --debug)'{-v,--debug}'[print verbose information for each processing step]'
+      "${ign}(- *)--help[display help information]"
+      "${ign}(- *)--version[display version information]"
     )
   ;;
   freebsd*)
diff --git a/Completion/Unix/Command/_gnutls b/Completion/Unix/Command/_gnutls
index 2cd559843..1c14de791 100644
--- a/Completion/Unix/Command/_gnutls
+++ b/Completion/Unix/Command/_gnutls
@@ -54,13 +54,14 @@ case "$service" in
   gnutls-cli)
     args+=(
       '--tofu[enable trust on first use authentication]' '!--no-tofu'
-      '--strict-tofu[fail to connect if a known certificate has changed]' '!--no-strict-tofu'
+      '--strict-tofu[fail to connect if a certificate is unknown or has changed]' '!--no-strict-tofu'
       '--dane[enable DANE certificate verification (DNSSEC)]' '!--no-dane'
       '--local-dns[use the local DNS server for DNSSEC resolving]' '!--no-local-dna'
       '--no-ca-verification[disable CA certificate verification]' '!--ca-verification'
       '--ocsp[enable OCSP certificate verification]' '!--no-oscp'
       '(-r --resume)'{-r,--resume}'[establish a session and resume]'
       '(-e --rehandshake)'{-e,--rehandshake}'[connect, establish a session and rehandshake immediately]'
+      "--verify-hostname-str=[specify server's hostname to use for validation]:hostname"
       '(-s --starttls)'{-s,--starttls}'[start TLS on EOF or SIGALRM]'
       '--crlf[send CR LF instead of LF]'
       '--fastopen[enable TCP Fast Open]'
@@ -75,7 +76,6 @@ case "$service" in
       '--pskusername[specify PSK username to use]:username'
       '--pskkey[specify PSK key to use]:key'
       "--insecure[don't require server cert validation]"
-      '--ranges[use length-hiding padding to prevent traffic analysis]'
       '--benchmark-ciphers[benchmark individual ciphers]'
       '--benchmark-soft-ciphers[benchmark individual software ciphers]'
       '--benchmark-tls-kx[benchmark TLS key exchange methods]'
@@ -84,7 +84,8 @@ case "$service" in
       '*--alpn=[enable application layer protocol]:string'
       '--recordsize=[specify maximum record size to advertize]:record size'
       "--disable-sni[don't send a Server Name]"
-      '--disable-extensions[disable all the TLS extensions]'
+      '--single-key-share[send a single key share under TLS1.3]'
+      '--post-handshake-auth[enable post-handshake authentication under TLS1.3]'
       '--inline-commands[inline commands of the form ^<cmd>^]'
       '--inline-commands-prefix=[change delimiter used for inline commands]:delimiter [^]'
       '--fips140-mode[report status of FIPS140-2 mode in gnutls library]'
@@ -96,20 +97,22 @@ case "$service" in
       '--sni-hostname-fatal[send fatal alert on sni-hostname mismatch]'
       '*--alpn=[specify ALPN protocol to be enabled by the server]:protocol'
       '--alpn-fatal[send fatal alert on non-matching ALPN name]'
+      "--nocookie[don't require cookie on DTLS sessions]"
       '(-g --generate)'{-g,--generate}'[generate Diffie-Hellman parameters]'
       '(-q --quiet)'{-q,--quiet}'[suppress some messages]'
       "--nodb[don't use a resumption database]"
       '--http[act as an HTTP server]'
       '--echo[act as an Echo server]'
-      '(-a --disable-client-cert)'{-a,--disable-client-cert}"[don't request a client certificate]"
-      '(-r --require-client-cert)'{-r,--require-client-cert}'[require a client certificate]'
+      '(-a --disable-client-cert -r --require-client-cert)'{-a,--disable-client-cert}"[don't request a client certificate]"
+      '(-a --disable-client-cert -r --require-client-cert)'{-r,--require-client-cert}'[require a client certificate]'
       '--verify-client-cert[if a client certificate is sent then verify it]'
       '--dhparams=[specify DH params file to use]:file:_files'
       '--srppasswd=[specify SRP password file to use]:file:_files'
       '--srppasswdconf=[specify SRP password configuration file to use]:file:_files'
       '--pskpasswd=[specify PSK password file to use]:file:_files'
       '--pskhint=[specify PSK identity hint to use]:string'
-      '--ocsp-response=[specify OCSP response to send to client]:file:_files'
+      '*--ocsp-response=[specify OCSP response to send to client]:string:_files'
+      '--ignore-ocsp-response-errors[ignore any errors when setting the OCSP response]'
     )
   ;;
 
@@ -158,7 +161,6 @@ case "$service" in
       '--empty-password[enforce an empty password]'
       '--key-type=[specify the key type to use on key generation]:key type'
       '(-i --certificate-info)'{-i,--certificate-info}'[print information on a certificate]'
-      '--certificate-pubkey[print certificate public key]'
       '(-l --crl-info)'{-l,--crl-info}'[print information on a CRL]'
       '--crq-info[print information on a certificate request]'
       "--no-crq-extensions[don't use extensions in certificate requests]"
diff --git a/Completion/Unix/Command/_iostat b/Completion/Unix/Command/_iostat
index e95d62f80..8909ae311 100644
--- a/Completion/Unix/Command/_iostat
+++ b/Completion/Unix/Command/_iostat
@@ -38,6 +38,7 @@ case $OSTYPE:l in
     args+=(
       '-D[display alternate disk statistics]'
       '-x[show extended disk statistics]'
+      '-y[report data on waiting and active requests]'
       '*:drives:( $(sysctl -n hw.disknames) )'
     )
     ;;
@@ -114,6 +115,7 @@ case $OSTYPE:l in
     args=(
       '-c[display CPU utilization report]'
       '-d[display device utilization report]'
+      '--dec=-[specify the number of decimal places to use]:decimal places [2]:(0 1 2)'
       '*-g[display statistics for a group of devices]:group name'
       '-H[only display global statistics for group]'
       '(--human)-h[human readable device utilization report]'
diff --git a/Completion/Unix/Command/_ln b/Completion/Unix/Command/_ln
index 764dc8f99..3c1dcac76 100644
--- a/Completion/Unix/Command/_ln
+++ b/Completion/Unix/Command/_ln
@@ -52,16 +52,12 @@ else
     ;|
     darwin*|dragonfly*|freebsd*|netbsd*)
       args+=(
-      '(-f)-i[prompt before removing destination files]'
+        '-F[remove existing destination directories]'
+        '(-f)-i[prompt before removing destination files]'
         '-v[print name of each linked file]'
       )
     ;|
-    darwin*|dragonfly*|freebsd*)
-      args+=(
-        '-F[remove existing destination directories]'
-      )
-    ;|
-    dragonfly*|freebsd*|openbsd*)
+    dragonfly*|freebsd*|netbsd*|openbsd*)
       args+=(
         '(-L)-P[create hard links directly to symbolic links]'
         '(-P)-L[create hard links to symbolic link references]'
diff --git a/Completion/Unix/Command/_md5sum b/Completion/Unix/Command/_md5sum
index 8e93fbbac..3dfcd6322 100644
--- a/Completion/Unix/Command/_md5sum
+++ b/Completion/Unix/Command/_md5sum
@@ -7,7 +7,7 @@
 #
 # @todo Support BusyBox?
 
-local type
+local type ign
 local -a args
 
 case $service in
@@ -17,16 +17,18 @@ case $service in
 esac
 
 # General options
-args+=(
+(( $#words > 2 )) && ign='!'
+args=(
   '(: -)--help[display help information]'
   '(: -)--version[display version information]'
 )
 # Summing options
-args+=(
+args=( ${ign}${^args}
   + sum
   '(chk)--tag[create BSD-style checksums]'
   '(chk -b -t --binary --text)'{-b,--binary}'[read in binary mode]'
   '(chk -b -t --binary --text)'{-t,--text}'[read in text mode]'
+  '(chk -z --zero)'{-z,--zero}'[end each output line with NUL and disable filename escaping]'
 )
 # This is the only option that differs amongst all of these tools
 [[ $service == *b2* ]] && args+=(
diff --git a/Completion/Unix/Command/_ps b/Completion/Unix/Command/_ps
index 72e711227..98dcd1cd0 100644
--- a/Completion/Unix/Command/_ps
+++ b/Completion/Unix/Command/_ps
@@ -110,10 +110,16 @@ case $OSTYPE in
     bsdarg+=( '*G[select processes by real group]' )
   ;|
   freebsd*|dragonfly*)
-    bsd+=( 'f[show command and environment for swapped out processes]' ) ;|
+    bsd+=( 'f[show command and environment for swapped out processes]' )
+  ;|
   netbsd*|openbsd*)
     bsdarg+=( 'W[extract swap information from specified file]' )
   ;|
+  freebsd*|netbsd*)
+    bsd+=(
+      'd[show process hierarchy]'
+    )
+  ;|
   darwin*)
     bsd+=(
       'd[select all processes except session leaders]'
@@ -140,7 +146,6 @@ case $OSTYPE in
   ;;
   freebsd*)
     bsd+=(
-      'd[show process hierarchy]'
       '*J[select processes by jail ID]'
       'Z[show mac label]'
     )
diff --git a/Completion/Unix/Command/_route b/Completion/Unix/Command/_route
index f8426874c..06cca8d99 100644
--- a/Completion/Unix/Command/_route
+++ b/Completion/Unix/Command/_route
@@ -81,7 +81,7 @@ case $OSTYPE in
       '-llinfo:validly translate proto addr to link addr'
     )
   ;|
-  (open|free)bsd*|darwin*|dragonfly*)
+  (net|open|free)bsd*|darwin*|dragonfly*)
     args+=(
       "-d[debug-only mode: don't update routing table]"
       '-t[test-only mode: /dev/null used instead of a socket]'
@@ -89,7 +89,7 @@ case $OSTYPE in
   ;|
   netbsd*|solaris*)
     args+=( '-f[remove all routes first]' )
-  ;;
+  ;|
   (netbsd|darwin|dragonfly)*)
     modifiers+=( '-proxy:make entry a link level proxy' )
   ;|
@@ -121,8 +121,10 @@ case $OSTYPE in
   netbsd*)
     subcmds+=( flushall 'remove all routes including the default gateway' )
     args+=(
+      "-L[don't show link layer entries in routing table]"
       '-S[print a space when a flag is missing to align flags]'
       '-s[suppress all output from get except for the gateway]'
+      '-T[show tags in the route display]'
     )
     modifiers+=(
       '-tag'
diff --git a/Completion/Unix/Command/_service b/Completion/Unix/Command/_service
index 50e8607bf..1216f57a8 100644
--- a/Completion/Unix/Command/_service
+++ b/Completion/Unix/Command/_service
@@ -5,24 +5,28 @@
 # _sub_command happy
 
 # we are interested in init service only
-local args ctx="${curcontext}argument-1:"
+local args actions ctx="${curcontext}argument-1:"
 zstyle -T  ":completion:${ctx}" tag-order && \
   zstyle ":completion:${ctx}" tag-order init
 
 case $OSTYPE in
+  freebsd<11->.*)
+    args=( '-j+[perform actions in specified jail]:jail:_jails' )
+  ;&
   freebsd*|dragonfly*)
-    args=(
-      '(-)-r[show the results of boot time rcorder]'
-      '(-)-R[restart all enabled local services]'
+    actions=(
+      '(*)-r[show the results of boot time rcorder]'
+      '(*)-R[restart all enabled local services]'
     )
   ;&
   netbsd*)
     _arguments -s $args \
-      '(-)-e[show services that are enabled]' \
-      '(-)-l[list all scripts in /etc/rc.d and the local startup directory]' \
       '(-e -R)-v[verbose]' \
-      ':service name:_services' \
-      '*::service argument:_init_d'
+      '*::service argument:_init_d' \
+      + '(actions)' $actions \
+      '(*)-e[show services that are enabled]' \
+      '(*)-l[list all scripts in /etc/rc.d and the local startup directory]' \
+      ':service name:_services'
   ;;
   *)
     _arguments -s \
diff --git a/Completion/Unix/Command/_sort b/Completion/Unix/Command/_sort
index c81e6f856..dfd43ce55 100644
--- a/Completion/Unix/Command/_sort
+++ b/Completion/Unix/Command/_sort
@@ -4,8 +4,8 @@ local args variant
 local ordering='(-d --dictionary-order -g --general-numeric-sort -M --month-sort -h --human-numeric-sort -n --numeric-sort --sort -V --version-sort --help --version)'
 
 args=(
-  "(-c --check -C)-c[check whether input is sorted; don't sort]"
-  '(-m --merge)'{-m,--merge}"[merge already sorted files; don't sort]"
+  "(-c --check -C -m --merge -s --stable)-c[check whether input is sorted; don't sort]"
+  '(-c --check -C -m --merge)'{-m,--merge}"[merge already sorted files; don't sort]"
   '(-o --output)'{-o+,--output=}'[write result to file instead of standard output]:output file:_files'
   \*{-T+,--temporary-directory=}'[specify directory for temporary files]:directory:_directories'
   '(-u --unique)'{-u,--unique}'[with -c, check for strict ordering; without -c, output only the first of an equal run]'
@@ -26,7 +26,7 @@ case $variant in
       '(-s --stable)'{-s,--stable}'[preserve original order of lines with the same key]'
     )
   ;|
-  openbsd*|freebsd*|gnu|solaris2.<11->)
+  netbsd*|openbsd*|freebsd*|gnu|solaris2.<11->)
     args+=(
       "(-c --check -C)-C[check whether input is sorted silently; don't sort]"
     )
diff --git a/Completion/Unix/Command/_top b/Completion/Unix/Command/_top
index 8f81e9526..f9d2733fc 100644
--- a/Completion/Unix/Command/_top
+++ b/Completion/Unix/Command/_top
@@ -72,7 +72,8 @@ case $OSTYPE in
       '-m+[specify statistic type]:type:(( cpu\:default io ))'
       '-P[per-cpu CPU usage statistics]'
       '(1 -)-v[write version number and exit]'
-      '-z[do not display system idle process]'
+      '-w[display approximate swap usage]'
+      "-z[don't display system idle process]"
       '-J+[show processes owned by the specified jail]:jail:_jails -0'
       '-U+[show processes owned by the specified username]: :_users'
     );;
diff --git a/Completion/Unix/Command/_split b/Completion/Unix/Command/_split
index 25b5aec2d..c5ab0dc9b 100644
--- a/Completion/Unix/Command/_split
+++ b/Completion/Unix/Command/_split
@@ -42,12 +42,12 @@ case $variant in
   (free|net)bsd*)
     args+=( '(-b -l -p)-n+[generate specified number of output files]:output files' )
   ;|
-  freebsd*)
+  darwin*|freebsd*)
     args+=(
-      '-d[use numeric suffixes]'
       '(-b -l -n)-p+[split the file whenever a line matches specified pattern]:pattern'
     )
-  ;;
+  ;|
+  freebsd*) args+=( '-d[use numeric suffixes]' ) ;;
 esac
 
 _arguments -s -S $args && ret=0


^ permalink raw reply	[flat|nested] 8+ messages in thread
* PATCH: completion options update
@ 2023-11-20  0:11 Oliver Kiddle
  0 siblings, 0 replies; 8+ messages in thread
From: Oliver Kiddle @ 2023-11-20  0:11 UTC (permalink / raw)
  To: Zsh workers

This is an update based on the usual help output diffs. Quite a few
files changed, mostly fairly minor.

For iptables, I've only bothered with the options that are always
accepted and not handled the many new extended match options that need a
-m option to be enabled. This adds arptables and entables to the compdef
line without making much attempt to handle the specifics of those.

xdvi updates are also incomplete.

_strip changes are mainly adding support for elftoolchain (FreeBSD)

enscript is a minor fix rather than new options.

Latest versions I have checked are as follows:

binutils 2.40.0 / elfutils 0.189 / elftoolchain 3769
btrfs 6.5.1
coreutils 9.4
dbus-send 1.14.10
dig 9.18.19
dmidecode 3.5
ethtool 6.5
evince 45.0
flac 1.4.2
gawk 5.2.2
gnupg 2.4.3
gnutls 3.8.1
iptables 1.8.8
less 643
libtiff 4.4.0
lsof 4.98.0
lua 5.4.6
mpc 0.34
pandoc 3.1.8
perl 5.38.0
ping 20221126
procps 4.0.3
pv 1.6.20
qiv 2.3.2
rsync 3.2.7
samba 4.19.2
shadow-utils 4.14.0
sqlite 3.43.1
sysstat 12.6.2
trace 6.6
util-linux 2.39.2
valgrind 3.19.0
wget 1.21.4
xsltproc 10138
xxd 2023-09-04
cat - macOS 13
chflags - various recent BSDs
truss and pkg5 - a fairly old snapshot of Solaris 11.4

Oliver

diff --git a/Completion/BSD/Command/_chflags b/Completion/BSD/Command/_chflags
index 924b09acd..905aa0645 100644
--- a/Completion/BSD/Command/_chflags
+++ b/Completion/BSD/Command/_chflags
@@ -1,22 +1,31 @@
 #compdef chflags
 
-local args own='-g *(-u$EUID)'
+local own='-g *(-u$EUID)'
+local -a args recurse
 
 (( ! EUID || $+_comp_priv_prefix )) && own=
 
-if [[ $OSTYPE = (darwin|dragonfly|freebsd)* ]]; then
-  args=(
-    "-f[don't display diagnostic messages]"
-    '-v[verbose output]'
-  )
-fi
+case $OSTYPE in
+  (darwin|dragonfly|freebsd)*)
+    args=(
+      "-f[don't display diagnostic messages]"
+      '-v[verbose output]'
+    )
+  ;|
+  darwin*|freebsd*)
+    recurse=( "-x[don't cross mount points]" )
+  ;|
+  netbsd*)
+    args=( '-d[if the change requested would not alter the flags, attempt no change]' )
+  ;|
+esac
 
 _arguments -s -A "-*" : $args \
   ': :_file_flags' \
   '*:file:_files "$own"' \
   - opth \
   '-h[act on symlinks]' \
-  - optR \
+  - optR $recurse \
   '-R[recurse directories]' \
   '(-L -P)-H[follow symlinks on the command line (specify with -R)]' \
   '(-H -P)-L[follow all symlinks (specify with -R)]' \
diff --git a/Completion/Linux/Command/_btrfs b/Completion/Linux/Command/_btrfs
index 1d87fd83a..d8b97a200 100644
--- a/Completion/Linux/Command/_btrfs
+++ b/Completion/Linux/Command/_btrfs
@@ -8,16 +8,16 @@ groups=( subvolume filesystem device scrub balance inspect-internal property
          quota qgroup replace rescue check restore send receive
          help version )
 cmds_1=( create delete list snapshot get-default set-default find-new show sync help )
-cmds_2=( df du show sync defragment resize label usage help )
+cmds_2=( df du show sync defragment resize label mkswapfile usage help )
 cmds_3=( add delete remove ready scan stats usage help )
 cmds_4=( start cancel resume status help )
 cmds_5=( start pause cancel resume status )
-cmds_6=( dump-{super,tree} {inode,logical,subvolid}-resolve min-dev-size rootid tree-stats help )
+cmds_6=( dump-{super,tree} {inode,logical,subvolid}-resolve map-swapfile min-dev-size rootid tree-stats help )
 cmds_7=( get set list )
 cmds_8=( enable disable rescan help )
-cmds_9=( assign remove create destroy show limit help )
+cmds_9=( assign remove create clear-stale destroy show limit help )
 cmds_10=( start status cancel help )
-cmds_11=( chunk-recover fix-device-size super-recover zero-log create-control-device )
+cmds_11=( chunk-recover clear-uuid-tree fix-device-size super-recover zero-log create-control-device )
 
 _arguments -C -A "-*" "$args[@]" \
   '(- *)--help[print help information]' \
@@ -25,6 +25,7 @@ _arguments -C -A "-*" "$args[@]" \
   '(-v --verbose -q --quiet --help --version)'{-v,--verbose}'[verbose output of operation]' \
   '(-v --verbose -q --quiet --help --version)'{-q,--quiet}'[suppress all messages except errors]' \
   '(--help --version)--format=[specify output format]:format:(text json)' \
+  '(--help --version)--log=[set log level]:level:(default info verbose debug quiet)' \
   '(--version)1: :->groups' \
   '2: :->cmds' \
   '*:: :->args' && ret=0
@@ -151,7 +152,7 @@ while (( $#state )); do
         filesystem:defragment)
           args+=( '!-v'
             '-r[defragment files recursively]'
-            '-c+[compress files while defragmenting]::compression algorithm:(zlib lzo zstd)'
+            '-c-[compress files while defragmenting]::compression algorithm:(zlib lzo zstd)'
             '-r[defragment files recursively]'
             '-f[flush after defragmenting]'
             '-s[start position]: :_numbers -u bytes -d "beginning of file" offset K M G T P E'
@@ -171,6 +172,13 @@ while (( $#state )); do
             '1: :_guard "^-*" uuid or label'
           )
         ;;
+        filesystem:mkswapfile)
+          args+=(
+            '-s[size]: :_numbers -d "2GiB" size K M G T P E'
+            '(-u --uuid)'{-u,--uuid}'[specify a uuid to use]:uuid:(clear random time)'
+            ':file:_files'
+          )
+        ;;
         filesystem:usage) args+=( '-T[show data in tabular format]' );;
         device:(add|delete|ready|remove))
           args+=(
@@ -194,6 +202,7 @@ while (( $#state )); do
           args+=(
             '(-c --check)'{-c,--check}'[return non-zero if any stat counter is not zero]'
             '(-z --reset)'{-z,--reset}'[reset stats when done]'
+            '-T[show current stats in tabular format]'
             "1:device or mountpoint:_files -g '*(-%,/)'"
           )
         ;;
@@ -233,7 +242,7 @@ while (( $#state )); do
         ;;
         balance:status) args+=( '!-v' '!--verbose' '1:path:_files -/' );;
         balance:(pause|cancel|resume)) args+=( '1:path:_files -/' );;
-        property:set) args+=( '3:value' );&
+        property:set) args+=( '-f[force the change]' '3:value' );&
         property:get) args+=( '2:property:(ro label compression)' );&
         property:list)
           args+=(
@@ -244,8 +253,9 @@ while (( $#state )); do
         quota:(enable|disable)) args+=( '1:path:_files -/' );;
         quota:rescan)
           args+=(
-            '-s[show status of currently running rescan]'
-            '-w[wait for rescan to finish]'
+            '(-s --status)'{-s,--status}'[show status of currently running rescan]'
+            '(-w --wait -W --wait-norescan)'{-w,--wait}'[wait for rescan to finish]'
+            '(-w --wait -W --wait-norescan)'{-w,--wait-norescan}'[wait for rescan to finish without starting it]'
             '1:path:_files -/'
           )
         ;;
@@ -268,11 +278,14 @@ while (( $#state )); do
             '-F[list impacted qgroups \(include ancestral qgroups\)]'
             '-f[list impacted qgroups \(exclude ancestral qgroups\)]'
             '--sort=-[sort qgroups]:sort:_values -s , sort \
-              qgroupid rfer excl max_rfer max_excl'
+              qgroupid rfer excl max_rfer max_excl path'
             '--sync[do filesystem sync before getting information]'
             '1:path:_files -/'
           )
         ;;
+        qgroup:clear-stale)
+          args+=( '(-q --quiet)'{-q,--quiet}'[print only errors]' '1:path:_files -/' )
+        ;;
         qgroup:limit)
           args+=(
             '-c[limit amount of data after compression]'
@@ -287,6 +300,7 @@ while (( $#state )); do
             '-r[read from specified source device only]:srcdev:_files'
             '-f[force overwriting of target]'
             "-B[don't background]"
+            '(-K --nodiscard)'{-K,--nodiscard}"[don't perform whole device TRIM]"
             ':srcdev or devid:_files'
             ':target:_files'
             ':path:->mounts'
@@ -332,6 +346,12 @@ while (( $#state )); do
             '2:filesystem path:_files -/'
           )
         ;;
+        inspect*:map-swapfile)
+          args+=(
+            '(-r --resume-offset)'{-r,--resume-offset}'[print only the value suitable as resume offset for file /sys/power/resume_offset]'
+            ':file:_files'
+          )
+        ;;
         inspect*:min*) args+=( '--id[specify the device id to query]:device id [1]' );;
         inspect*:rootid) args+=( '1:path:_files -/' );;
         inspect*:tree*) args+=( '-b[print raw numbers in bytes]' );;
@@ -395,6 +415,8 @@ while (( $#state )); do
             '*-c[use snapshot as clone source]:clone:_files -/'
             '-f[specify output file]:file:_files'
             '--no-data[send in NO_FILE_DATA mode]'
+            '--proto[specify protocol version]:version'
+            '--compressed-data[send data that is compressed on the filesystem directly without decompressing it]'
             '1:subvolume:_files -/'
           )
         ;;
@@ -405,6 +427,7 @@ while (( $#state )); do
             '(-C --chroot)'{-C,--chroot}'[confine the process to destination path using chroot(1)]'
             '(-E --max-errors)'{-E,--max-errors}'[terminate as soon as specified number of errors occur]:errors [1]'
             '(--dump)-m[specify root mount point of the destination filesystem]:mount point:_directories'
+            '--force-decompress[if the stream contains compressed data, always decompress it]'
             '(-m)--dump[dump stream metadata, one line per operation]'
             '1:mount:->mounts'
           )
diff --git a/Completion/Linux/Command/_ethtool b/Completion/Linux/Command/_ethtool
index 95a8bbfb6..3e3fc0b1d 100644
--- a/Completion/Linux/Command/_ethtool
+++ b/Completion/Linux/Command/_ethtool
@@ -4,7 +4,7 @@ local curcontext="$curcontext"
 local -a state line expl cmds
 local -A opt_args
 
-_arguments -C \
+_arguments -C -A "-*" \
   '--debug[turn on debugging messages]:mask:((1\:parser\ information))' \
   '--json[output results in JSON]' \
   '(-I --include-statistics)'{-I,--include-statistics}'[include command-related statistics in the output]' \
@@ -59,12 +59,21 @@ _arguments -C \
   '--cable-test[perform cable test and report the results]' \
   '--cable-test-tdr[perform cable test and report Time Domain Reflectometer data]' \
   '--show-tunnels[show tunnel-related device capabilities and state]' \
+  '--show-module[show transceiver module settings]' \
+  '--set-module[set transceiver module settings]' \
+  '--get-plca-cfg[get PLCA configuration]' \
+  '--set-plca-cfg[set PLCA configuration]' \
+  '--get-plca-status[get PLCA status information]' \
+  '--show-mm[show MAC merge layer state]' \
+  '--set-mm[set MAC merge layer parameters]' \
+  '--show-pse[show settings for power sourcing equipment]' \
+  '--set-pse[set power sourcing equipment settings]' \
   '--monitor[listen to netlink notifications and displays them]::command:(
     --all -s --change -k --show-features --show-offload -K
     --features --offload  --show-priv-flags --set-priv-flags -g --show-ring
     -G --set-ring -l --show-channels -L --set-channels -c --show-coalesce
     -C --coalesce -a --show-pause -A --pause --show-eee --set-eee
-    --cable-test --cable-test-tdr
+    --cable-test --cable-test-tdr --show-module --set-module
   )' && return
 
 if [[ -n $state ]]; then
@@ -79,22 +88,30 @@ if [[ -n $state ]]; then
     fi
   ;;
   autoneg|adaptive-[rt]x|raw|hex|sg|tso|ufo|gso|lro|eee|tx-lpi|downshift) ;&
-  fast-link-down|energy-detect-power-down|mode)
+  cqe-mode-[rt]x|fast-link-down|energy-detect-power-down|mode) ;&
+  [tr]x-push|enable|*-enabled)
     _wanted onoff expl 'enabled' compadd off on
   ;;
   rx-usecs|rx-frames|rx-usecs-irq|rx-frames-irq|tx-usecs|tx-frames) ;&
   tx-usecs-irq|tx-frames-irq|stats-block-usecs|pkt-rate-low|rx-usecs-low) ;&
   rx-frames-low|tx-usecs-low|tx-frames-low|pkt-rate-high|rx-usecs-high) ;&
-  rx-frames-high|tx-usecs-high|tx-frames-high|sample-interval|dmac|rx-mini) ;&
-  rx-jumbo|offset|length|magic|value|phyad|proto|tos|tclass|l4proto|src-port) ;&
+  rx-frames-high|tx-usecs-high|tx-frames-high|sample-interval|dmac) ;&
+  tx-aggr-max-bytes|tx-aggr-max-frame|tx-aggr-time-usec) ;&
+  rx-mini|rx-jumbo|rx-buf-len|cqe-size|tx-push-buf-len) ;&
+  offset|length|magic|value|phyad|proto|tos|tclass|l4proto|src-port) ;&
   dst-port|spi|l4data|vlan-etype|vlan|user-def|action|vf|queue|loc) ;&
   page|bank|i2c|first|last|step|pair|lanes) ;&
-  rx-copybreak|tx-copybreak|pfc-prevention-tout) ;&
-  other|combined|tx-timer|count|msecs)
+  rx-copybreak|tx-copybreak|tx-buf-size|pfc-prevention-tout) ;&
+  other|combined|tx-timer|count|msecs) ;&
+  node-id|node-cnt|to-tmr|burst-cnt|burst-tmr) ;&
+  tx-min-frag-size)
     _message -e numbers 'number'
   ;;
+  podl-pse-admin-control)
+    _wanted values expl 'value' compadd enable disable
+  ;;
   speed)
-        _wanted -x speed expl 'speed' compadd 10 100 1000
+    _wanted -x speed expl 'speed' compadd 10 100 1000
   ;;
   duplex)
     _wanted duplex expl 'duplex mode' compadd half full
@@ -166,8 +183,14 @@ if [[ -n $state ]]; then
   context)
     _message -e contexts 'RSS context'
   ;;
+  power-mode-policy)
+    _wanted policies expl 'policy' compadd high auto
+  ;;
   *)
     case ${${(Mk)opt_args:#cmd?*}[1]#cmd?-} in
+    -a|--show-pause)
+      _arguments '--src=-:source:(aggregate emac pmac)'
+    ;;
     -A|--pause)
       _values -S ' ' -w 'pause parameter' \
         'autoneg[specify if pause autonegotiation is enabled]' \
@@ -177,14 +200,16 @@ if [[ -n $state ]]; then
     -C|--coalesce)
       _wanted settings expl 'coalescing setting' compadd -F line -M 'r:|-=* r:|=*' - \
         adaptive-{r,t}x {r,t}x-{usecs,frames}{,-irq,-high,-low} \
-        stats-block-usecs pkt-rate-{low,high} sample-interval
+        stats-block-usecs pkt-rate-{low,high} sample-interval cqe-mode-{r,t}x \
+        tx-aggr-{max-bytes,max-frames,time-usecs}
     ;;
     -G|--set-ring)
       _values -S ' ' -w 'ring parameter' \
         'rx[change number of ring entries for the RX ring]' \
         'rx-mini[change number of ring entries for the RX Mini ring]' \
         'rx-jumbo[change number of ring entries for the RX Jumbo ring]' \
-        'tx[change number of ring entries for the TX ring]'
+        'tx[change number of ring entries for the TX ring]' \
+        rx-buf-len cqe-size tx-push rx-push tx-push-buf-len
     ;;
     -d|--register-dump)
       _values -S ' ' -w 'option' \
@@ -216,7 +241,9 @@ if [[ -n $state ]]; then
       (( CURRENT = 4 )) && _message -e length 'duration (seconds)'
     ;;
     -S|--statistics)
-      _arguments '(-)--all-groups' '(-)--groups:eth-phy: :eth-mac: :eth-ctrl: :rmon'
+      _arguments '(-)--all-groups' \
+        '(-)--groups:eth-phy: :eth-mac: :eth-ctrl: :rmon' \
+        '--src=-:source:(aggregate emac pmac)' \
     ;;
     -t|--test)
       _values -S ' ' -w 'test mode' \
@@ -318,7 +345,7 @@ if [[ -n $state ]]; then
     ;;
     --[gs]et-tunable)
       _wanted options expl tunable compadd rx-copybreak tx-copybreak \
-          pfc-prevention-tout
+          tx-buf-size pfc-prevention-tout
     ;;
     --reset)
       _wanted components expl component compadd flags dedicated all \
@@ -341,6 +368,13 @@ if [[ -n $state ]]; then
     --cable-test-tdr)
       _wanted options expl 'distance options' compadd first last step pair
     ;;
+    --set-module)
+      _wanted options expl tunable compadd power-mode-policy
+    ;;
+    --set-plca-cfg)
+      _wanted options expl tunable compadd enable node-id node-cnt \
+          to-tmr burst-cnt burst-tmr
+    ;;
     esac
   ;;
   esac
diff --git a/Completion/Linux/Command/_gpasswd b/Completion/Linux/Command/_gpasswd
index 24fe361b0..d5d16ebba 100644
--- a/Completion/Linux/Command/_gpasswd
+++ b/Completion/Linux/Command/_gpasswd
@@ -5,7 +5,7 @@ _arguments -s \
   '(-d --delete -a --add)'{-d,--delete}'[remove user from group]: : _users' \
   '(-)'{-h,--help}'[display help]' \
   '(-Q --root)'{-Q,--root}'[specify directory to chroot into]: : _files -/' \
-  '(-r --remove-password)'{-r,--remove-password}'[remove the group password]' \
+  '(-r --delete-password)'{-r,--delete-password}'[remove the group password]' \
   '(-R --restrict)'{-R,--restrict}'[restrict access to GROUP to its members]' \
   '(-M --members -A --administrators)'{-M,--members}'[set the list of members of GROUP]: :_sequence _users' \
   '(-A --administrators -M --members)'{-A,--administrators}'[set the list of admins for GROUP]: :_sequence _users' \
diff --git a/Completion/Linux/Command/_iptables b/Completion/Linux/Command/_iptables
index 27c801da1..892c48710 100644
--- a/Completion/Linux/Command/_iptables
+++ b/Completion/Linux/Command/_iptables
@@ -1,7 +1,7 @@
-#compdef iptables iptables-save iptables-restore ip6tables ip6tables-save ip6tables-restore
+#compdef iptables iptables-save iptables-restore ip6tables ip6tables-save ip6tables-restore arptables ebtables
 
-local curcontext="$curcontext" state line expl i ret=1
-local -a cmds rcmds ropts rules states prev args
+local curcontext="$curcontext" i ret=1
+local -a state line expl cmds rcmds ropts rules states prev args
 
 case $service in
   iptables-save | ip6tables-save)
@@ -24,12 +24,12 @@ cmds=(
   -P --policy -E --rename-chain -h --help -V --version
 )
 ropts=(
-  -p --protocol -s --src --source -d --dst --destination -j --jump -i
+  -p --proto --protocol -s --src --source -d --dst --destination -j --jump -i
   --in-interface -o --out-interface -f --fragment -c --set-counters
 )
 
 prev=( ${words[1,CURRENT-1]} )
-case ${prev[${prev[(I)-p|--protocol]}+1]}; in
+case ${prev[${prev[(I)-p|--proto|--protocol]}+1]}; in
   tcp)
     args=(
       '--tcp-flags[match based on TCP flags in a packet]: :->tcp-flags: :->tcp-flags'
@@ -92,7 +92,42 @@ while
   (( i=words[(ib.i.)-m|--match]+1 ))
 (( i<CURRENT )); do
   case ${words[i]}; in
-    ah) args+=( '--ahspi[match SPIs in AH header]:*^!:spi' ) ;;
+    addrtype)
+      args+=(
+        '--src-type[match if the source address is of given type]:type:->address-types'
+        '--dst-type[match if the destination address is of given type]:type:->address-types'
+        '(--limit-iface-out)--limit-iface-in[limit to interface the packet is coming in]'
+        '(--limit-iface-in)--limit-iface-out[limit to interface the packet is going out]'
+      )
+    ;;
+    ah)
+      args+=( '--ahspi[match SPIs in AH header]:*^!:spi' )
+      [[ $service = ip6* ]] && args+=(
+        '--ahlen[total length of this header]:length (octets)'
+        '--ahres[match if the reserved field is filled with zero]'
+      )
+    ;;
+    bpf)
+      args+=(
+        '--object-pinned[pass a path to a pinned eBPF object]:path:_files'
+        '--bytecode[pass BPF byte code as generated by nfbpf_compile]:code'
+      )
+    ;;
+    cgroup)
+      args+=(
+        '--path[match cgroup2 membership]:path:_files -W /sys/fs/cgroup'
+        '--cgroup[match cgroup net_cls classid]:classid'
+      )
+    ;;
+    cluster)
+      args+=(
+        '--cluster-total-nodes[set number of total nodes in cluster]:number'
+        '--cluster-local-node[set the local node number ID]:number'
+        '--cluster-local-nodemask[set the local node number ID mask]:mask'
+        '--cluster-hash-seed[set seed value of the Jenkins hash]:value'
+      )
+    ;;
+    comment) args+=( '--comment[add comment to rule]:comment' ) ;;
     conntrack)
       args+=(
         '--ctstate[match packet state]:state:->cfstates'
@@ -160,30 +195,34 @@ _arguments -C -s \
   '(-)'{-V,--version}'[print version information]' \
   '(-h --help -V --version)'{-t,--table}'[specify table]:table:(filter nat mangle raw security)' \
   "($rcmds $cmds)"{-A,--append}'[append rules to end of specified chain]:chain:->chains' \
+  {-C,--check}'[check for the existence of a rule]' \
   "($rcmds $cmds -c --set-counters)"{-D,--delete}'[delete rules from specified chain]:chain:->chains::rule number:->rulenums' \
   "($rcmds $cmds)"{-I,--insert}'[insert rules before specified rule number]:chain:->chains::rule number:->rulenums' \
   "($rcmds $cmds)"{-R,--replace}'[replace a rule]:chain:->chains::rule number:->rulenums' \
-  "($rcmds "${(j. .)cmds:#(-Z|--zero)}" $ropts)"{-L,--list}'[list rules in selected chain]::chain:->chains' \
+  "($rcmds "${(j. .)cmds:#(-Z|--zero)}" $ropts)"{-L,--list}'[list rules in selected chain]::chain:->chains:rule number:->rulenums' \
+  '(-L --list -S --list-rules)'{-S,--list-rules}'[list rules in the form of options to iptables]::chain:->chains::rule number:->rulenums' \
   "($rcmds $cmds $ropts)"{-F,--flush}'[flush specified chain (delete all rules)]::chain:->chains' \
   "($rcmds "${(j. .)cmds:#(-L|--list)}" $ropts)"{-Z,--zero}'[zero the packet and byte counters]::chain:->chains' \
   "($rcmds $cmds)"{-N,--new,--new-chain}'[create a new user-defined chain]:chain name' \
   "($rcmds $cmds)"{-X,--delete-chain}'[delete a user-defined chain]:: :->user-chains' \
   "($rcmds $cmds)"{-P,--policy}'[set the policy for a chain to given target]:chain:->chains:target:->targets' \
   "($rcmds $cmds)"{-E,--rename-chain}'[rename a user-defined chain]:old chain:->user-chains:new chain name' \
-  "($cmds -p --protocol)"{-p,--protocol}'[specify protocol of rule]:*^!:protocol:(! tcp udp icmp all)' \
-  "($cmds -s --src --source)"{-s,--src,--source}'[specify source]:*^!:network:_hosts' \
-  "($cmds -d --dst --destination)"{-d,--dst,--destination}'[specify destination]:*^!:network:_hosts' \
+  "($cmds -p --proto --protocol)"{-p,--proto,--protocol}'[specify protocol of rule]:*^!:protocol:(! tcp udp icmp all)' \
+  "($cmds -s --src --source)"{-s,--src,--source}'[specify source]:*^!:network:_sequence _hosts' \
+  "($cmds -d --dst --destination)"{-d,--dst,--destination}'[specify destination]:*^!:network:_sequence _hosts' \
   "($cmds -j --jump)"{-j,--jump}'[specify rule target]:target:->targets' \
   "($cmds -i --in-interface)"{-i,--in-interface}'[specify interface via which packet is received]:*^!:interface:_net_interfaces' \
   "($cmds -o --out-interface)"{-o,--out-interface}'[specify interface via which packet is to be sent]:*^!:interface:_net_interfaces' \
   "($cmds -f --fragment)"{-f,--fragment}'[match second or further fragments only]' \
   "($cmds -D --delete -c --set-counters)"{-c,--set-counters}'[initialise packet and byte counters]:packets: :bytes' \
   '(-v --verbose)'{-v,--verbose}'[enable verbose output]' \
+  '(-w --wait)'{-w,--wait}'[specify maximum wait to acquire xtables lock before giving up]: :_numbers -u seconds -d 1 wait' \
+  '(-W --wait-interval)'{-W,--wait-interval}'[specify wait time to try to acquire xtables lock]: :_numbers -u usecs -d "1 second" wait' \
   '(-n --numeric)'{-n,--numeric}'[print IP addresses and port numbers in numeric format]' \
   '(-x --exact)'{-x,--exact}'[expand numbers (display exact values)]' \
   '--line-numbers[print line numbers when listing]' \
   '--modprobe=[specify command to load modules with]:command:_command_names -e' \
-  "($cmds)*"{-m,--match}'[extended match (may load extension)]:extension:(ah conntrack dscp esp helper icmp length limit mac mark multiport owner physdev pkttype state tcp tos ttl udp unclean)' \
+  "($cmds)*"{-m,--match}'[extended match (may load extension)]:extension:(addrtype ah bpf cgroup cluster comment connbytes connlabel connlimit connmark conntrack cpu dccp devgroup dscp dsr ecn esp eui64 frag hashlimit hbh helper hl icmp icmp6 iprange ipv6header ipvs length limit mac mark mh multiport nfacct osf owner physdev pkttype policy quota rateest realm recent rpfilter rt sctp set socket state statistic string tcp tcpmss time tos ttl u32 udp unclean)' \
   "$args[@]" && ret=0
 
 case "$state" in
@@ -230,6 +269,11 @@ case "$state" in
     [[ "$state" = cf* ]] && states+=( SNAT DNAT )
     _values -s , 'state' $states && return
   ;;
+  address-types)
+    _wanted address-types expl 'address type' compadd \
+        UNSPEC UNICAST LOCAL BROADCAST ANYCAST MULTICAST \
+        BLACKHOLE UNREACHABLE PROHIBIT THROW NAT XRESOLVE && ret=0
+  ;;
   port-list)
     compset -P '*,'
     if compset -S ',*'; then
diff --git a/Completion/Linux/Command/_strace b/Completion/Linux/Command/_strace
index b1c7e1c8f..37e14b6d6 100644
--- a/Completion/Linux/Command/_strace
+++ b/Completion/Linux/Command/_strace
@@ -17,6 +17,7 @@ _arguments -C -s \
   '(-D)--daemonize=-[specify how to run tracer process]::method:(grandchild pgroup session)' \
   '(-f --follow-forks)'{-f,--follow-forks}'[trace child processes as they are created by currently traced processes]' \
   '(-I --interruptible)'{-I+,--interruptible=}'[specify when strace can be interrupted by signals]:interruptible:((1\:"no signals are blocked" 2\:"fatal signals are blocked while decoding syscall (default)" 3\:"fatal signals are always blocked (default with -o)" 4\:"fatal signals and SIGTSTP are always blocked"))' \
+  '--kill-on-exit[kill all tracees if strace is killed]' \
   \*{-e+,--trace=}'[select events to trace or how to trace]:system call:->expressions' \
   \*{-P+,--path=}'[trace only system calls accessing given path]:path:_files' \
   '(-z -Z --successful-only --failed-only)'{-z,--successful-only}'[trace only system calls that return success]' \
diff --git a/Completion/Linux/Command/_sysstat b/Completion/Linux/Command/_sysstat
index 0baae0764..59a2f5da9 100644
--- a/Completion/Linux/Command/_sysstat
+++ b/Completion/Linux/Command/_sysstat
@@ -56,6 +56,7 @@ _sadf() {
       '--dev=-[specify block devices for which statistics are to be displayed]:block device:_files -g "*(-%)"' \
       '--fs=-[specify filesystems for which statistics are to be displayed]:file system:_dir_list -s ,' \
       '--iface=-[specify network interfaces for which statistics are to be displayed]:network interface:_sequence _net_interfaces' \
+      '--int=-[specify interrupts for which statistics are to be displayed]: : _values -s "," interrupt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15' \
       '-s[set starting time of report]:starting time (HH\:MM\:SS)"' \
       '(-t -U)-T[display timestamp in local time]' \
       '(-T -U)-t[display timestamp in file\''s original localtime]' \
@@ -99,9 +100,10 @@ _sar() {
     '(--human -p)-h[make output easier to read: implies --human and -p]' \
     '(- 1 2)--help[display usage information]' \
     '--human[print sizes in human readable format]' \
-    '*-I[report statistics for interrupts]: : _values -s "," interrupt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SUM ALL XALL' \
+    '-I[report statistics for interrupts]:interrupt:(SUM ALL)' \
     '-i[select records as close as possible to interval]:interval' \
     '--iface=-[specify network interfaces for which statistics are to be displayed]:network interface:_sequence _net_interfaces' \
+    '--int=-[specify interrupts for which statistics are to be displayed]: : _values -s "," interrupt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15' \
     '-j[display persistent device names]:type:(ID LABEL PATH UUID)' \
     '-m[report power management statistics]:keyword:_sequence compadd - CPU FAN FREQ IN TEMP USB ALL' \
     '-n[report network statistics]:keyword:_sequence compadd - DEV EDEV NFS NFSD SOCK IP EIP ICMP EICMP TCP ETCP UDP SOCK6 IP6 EIP6 ICMP6 EICMP6 UDP6 FC SOFT ALL' \
diff --git a/Completion/Linux/Command/_valgrind b/Completion/Linux/Command/_valgrind
index b4bb3248e..e1498be6d 100644
--- a/Completion/Linux/Command/_valgrind
+++ b/Completion/Linux/Command/_valgrind
@@ -216,7 +216,7 @@ _arguments -C ${(P)args} $cmd \
   '--vgdb=-[activate gdbserver]:enable [yes]:(yes no full)' \
   '--vgdb-error=-[invoke gdbserver after specified number of errors]:errors [999999999]:errors' \
   '--vgdb-stop-at=-[invoke gdbserver for given events]:event:_sequence compadd - startup exit valgrindabexit all none' \
-  '--track-fds=-[track open file descriptors]:enable:(yes no)' \
+  '--track-fds=-[track open file descriptors]:enable [no]:(yes no all)' \
   '--time-stamp=-[add timestamps to log messages]:enable:(yes no)' \
   '--log-fd=-[log messages to specified file descriptor]:file descriptor:_file_descriptors' \
   '--log-file=-[log messages to specified file with pid appended]:file:_files' \
diff --git a/Completion/Redhat/Command/_rpm b/Completion/Redhat/Command/_rpm
index d00f88429..97f65cd6c 100644
--- a/Completion/Redhat/Command/_rpm
+++ b/Completion/Redhat/Command/_rpm
@@ -74,6 +74,7 @@ _rpm () {
   selectopts=(
     {-a,--all}'[query all packages]'
     {-f,--file}'[query packages that own specified files]'
+    '--path[query packages that own specified files, installed or not]'
     {-p,--package}'[query uninstalled packages]'
     {-g,--group}'[query packages in one of specified groups]'
     --pkgid --hdrid --tid --querybynumber
@@ -165,9 +166,7 @@ _rpm () {
         {-F+,--freshen}'[freshen mode]:*:upgrade:->upgrade'
         {-e+,--erase}'[uninstall mode]:*:uninstall:->uninstall'
         '--reinstall[reinstall mode]:*:install:->install'
-        '--setperms[set file permissions]:*:package:->setattrs'
-        '--setugids[set file owner/group]:*:package:->setattrs'
-        '--setcaps[set capabilities of files in the given package]:*:package:->setattrs'
+        '!--set'{perms,ugids,caps}':*:package:->setattrs'
         '--restore[restore owner, group, permissions and capabilities of files in the given package]:*:package:->setattrs'
       )
     ;;
@@ -261,13 +260,15 @@ _rpm () {
     install)
       _arguments -s -C \!{-i,--install,-U,--upgrade,-F,--freshen} $tmp \
         $commonopts $pathopts \
+        '(--nodb)--justdb[update the database but not the filesystem]' \
+        '(--justdb)--nodb[update the filesystem but not the database]' \
         '--excludepath=:file to exclude:_files -/' \
 	'--relocate:relocate:->relocate' \
         '--prefix=[relocate the package]:package prefix directory:_files -/' \
         '(-h --hash)'{-h,--hash}'[print hash marks as package installs]' \
 	'(--replacepkgs --replacefiles --oldpackage)--force' \
 	'(--force)--'{replacefiles,replacepkgs} \
-        --{aid,allfiles,badreloc,excludedocs,ignorearch,ignoreos,ignoresize,includedocs,justdb,percent,test} \
+        --{aid,allfiles,badreloc,excludedocs,ignorearch,ignoreos,ignoresize,includedocs,percent,test} \
         --no{deps,filedigest,contexts,caps,order,suggest,pre,post,preun,postun,trigger{s,in,un,postun}} \
 	'(--nopre --nopost --nopreun --nopostun)--noscripts' \
         '*:pkg file:->package_file'
@@ -275,7 +276,9 @@ _rpm () {
     uninstall)
       _arguments -s -C \!{-e,--erase} \
 	"${commonopts[@]}" "${pathopts[@]}" \
-	--{allmatches,justdb,repackage,test} \
+        '(--nodb)--justdb[update the database but not the filesystem]' \
+        '(--justdb)--nodb[update the filesystem but not the database]' \
+	--{allmatches,repackage,test} \
 	--no{deps,scripts,preun,postun,trigger{s,un,postun}} \
         '*:package:->package'
       ;;
diff --git a/Completion/Solaris/Command/_pkg5 b/Completion/Solaris/Command/_pkg5
index bcd4e3daf..5524e4eda 100644
--- a/Completion/Solaris/Command/_pkg5
+++ b/Completion/Solaris/Command/_pkg5
@@ -378,6 +378,7 @@ _pkg5() {
 			'--non-sticky[Make this publisher non-sticky]' \
 			'--search-after[Set publisher search-order]:publisher:_pkg5_pubs' \
 			'--search-before[Set publisher search-order]:publisher:_pkg5_pubs' \
+			'--search-first[set the specified publisher first in the search order]' \
 			'--approve-ca-cert[Add trusted CA certificate]:CA cert path:_path_files' \
 			'--revoke-ca-cert[Revoke CA certificate]:CA cert hash:(${${certs#/etc/openssl/certs/}%.0})' \
 			'--unset-ca-cert[Remove trusted CA certificate]:CA cert hash:' \
diff --git a/Completion/Unix/Command/_awk b/Completion/Unix/Command/_awk
index e8f4a2530..b69cc5cf8 100644
--- a/Completion/Unix/Command/_awk
+++ b/Completion/Unix/Command/_awk
@@ -50,6 +50,7 @@ case $variant in
       {-D-,--debug=-}'[enable debugging]::debugger command file:_files'
       {-g,--gen-pot}'[scan awk program and generate .po file on stdout]'
       '*'{-i+,--include}'[load source library]:library file:->script'
+      {-I,--trace}'[print internal byte code names as they are executed]'
       '*'{-l+,--load}'[load dynamic extension]:extension:->extension'
       {-M,--bignum}'[select arbitrary-precision arithmetic on numbers]'
       {-o-,--pretty-print=-}'[pretty-print awk program]::output file:_files'
diff --git a/Completion/Unix/Command/_cat b/Completion/Unix/Command/_cat
index 74d7278b8..526c49e31 100644
--- a/Completion/Unix/Command/_cat
+++ b/Completion/Unix/Command/_cat
@@ -38,6 +38,9 @@ elif [[ "$OSTYPE" == (*bsd|dragonfly|darwin)* ]]; then
     '-B+[read with buffer of specified size]:size (bytes)'
     '-f[only attempt to display regular files]'
   )
+  [[ $OSTYPE = darwin* ]] && args+=(
+    '-l[set an exclusive advisory lock on standard output]'
+  )
 elif [[ $OSTYPE = solaris* ]]; then
   args=(
     -A "-*"
diff --git a/Completion/Unix/Command/_dbus b/Completion/Unix/Command/_dbus
index 37b5458d7..d2a93152c 100644
--- a/Completion/Unix/Command/_dbus
+++ b/Completion/Unix/Command/_dbus
@@ -8,11 +8,13 @@ case $service in
   dbus-send)
     _arguments -A "--*" -C \
       '(--session)--system' '(--system)--session' \
-      '--address=-:bus address:->addresses' \
+      '--bus=-:bus address:->addresses' \
+      '--peer=-:bus address:->addresses' \
       '--dest=-:connection:->connections' \
       '--print-reply=-::format:(literal)' \
       '--reply-timeout=-:timeout (ms)' \
-      '--type=-:type:(method_call signal)' \
+      '--sender=-:name' \
+      '--type=-:type [signal]:(method_call signal)' \
       '(* -)--help' \
       ':object path:->objectpaths' \
       ':message name:->methods' \
diff --git a/Completion/Unix/Command/_dd b/Completion/Unix/Command/_dd
index 10682bc8e..c55efb68c 100644
--- a/Completion/Unix/Command/_dd
+++ b/Completion/Unix/Command/_dd
@@ -74,7 +74,7 @@ case $variant in
     vals+=(
       'status[specify level of information to print to stderr]:level:(none noxfer progress)'
     )
-    flags+=( fullblock noatime nocache count_bytes skip_bytes seek_bytes )
+    flags+=( fullblock noatime nocache )
     conv+=( excl nocreat fdatasync fsync )
     units=( c:1 w:2 b:512 kB:1000 K:1024 MB:1000^2 M:1024\^2 GB G TB T PB P EB E ZB Z YB Y )
   ;;
diff --git a/Completion/Unix/Command/_dig b/Completion/Unix/Command/_dig
index 3081e2cfd..c09bebbe5 100644
--- a/Completion/Unix/Command/_dig
+++ b/Completion/Unix/Command/_dig
@@ -6,8 +6,9 @@ local -a alts args
   '*+'{no,}'tcp[use TCP instead of UDP for queries]'
   '*+'{no,}'ignore[ignore truncation in UDP responses]'
   '*+domain=[set search list to single domain]:domain:_hosts'
-  '*+dscp=[set DSCP code point for query]:code point (0..63)'
+  '!*+dscp=:code point (0..63)'
   '*+'{no,}'search[use search list defined in resolv.conf]'
+  '!*+'{no,}defname
   '*+'{no,}'showsearch[show intermediate results in domain search]'
   '*+split[split hex/base64 fields into chunks]:width (characters) [56]'
   '*+'{no,}'aaonly[set aa flag in the query]'
@@ -18,6 +19,7 @@ local -a alts args
   '*+'{no,}'class[display the CLASS whening printing the record]'
   '*+'{no,}'cookie[add a COOKIE option to the request]'
   '*+'{no,}'crypto[display cryptographic fields in DNSSEC records]'
+  '*+'{no,}'dns64prefix[get the DNS64 prefixes from ipv4only.arpa]'
   '*+edns=[specify EDNS version for query]:version (0-255)'
   '*+noedns[clear EDNS version to be sent]'
   '*+ednsflags=[set EDNS flags bits]:flags'
@@ -27,11 +29,15 @@ local -a alts args
   '*+'{no,}'expandaaaa[expand AAAA records]'
   '*+'{no,}'expire[send an EDNS Expire option]'
   '*+'{no,}'header-only[send query without a question section]'
+  '*+'{no,}'https=[DNS-over-HTTPS POST mode]::endpoint [/dns-query]'
+  '!*+'{no,}'https-post=::endpoint [/dns-query]'
+  '*+'{no,}'https-get=[DNS-over-HTTPS GET mode]::endpoint [/dns-query]'
+  '*+'{no,}'http-plain=[DNS-over-HTTP POST mode]::endpoint [/dns-query]'
+  '*+'{no,}'http-plain-get=[DNS-over-HTTP GET mode]::endpoint [/dns-query]'
   '*+'{no,}'idnin[set processing of IDN domain names on input]'
   '*+'{no,}'idnout[set conversion of IDN puny code on output]'
   '*+'{no,}'keepalive[request EDNS TCP keepalive]'
   '*+'{no,}'keepopen[keep TCP socket open between queries]'
-  '*+'{no,}'mapped[allow mapped IPv4 over IPv6 to be used]'
   '*+'{no,}'recurse[set the RD (recursion desired) bit in the query]'
   '*+'{no,}'nssearch[search all authoritative nameservers]'
   '*+opcode[set DNS message opcode of the request]:opcode [QUERY]:(QUERY IQUERY STATUS NOTIFY UPDATE)'
@@ -39,10 +45,12 @@ local -a alts args
   '*+'{no,}'trace[trace delegation down from root]'
   '*+'{no,}'cmd[print initial comment in output]'
   '*+'{no,}'short[print terse output]'
+  '*+'{no,}'showbadcookie[show BADCOOKIE message]'
   '*+'{no,}'identify[print IP and port of responder]'
   '*+'{no,}'comments[print comment lines in output]'
   '*+'{no,}'stats[print statistics]'
   '*+padding[set padding block size]:size [0]'
+  '*+qid=[specify query ID]:query ID'
   '*+'{no,}'qr[print query as it was sent]'
   '*+'{no,}'question[print question section of a query]'
   '*+'{no,}'raflag[set RA flag in the query]'
@@ -52,6 +60,11 @@ local -a alts args
   '*+'{no,}'subnet[send EDNS client subnet option]:addr/prefix-length'
   '*+'{no,}'tcflag[set TC flag in the query]'
   '*+timeout=[set query timeout]:timeout (seconds) [5]'
+  '*+'{no,}'tls[DNS-over-TLS mode]'
+  '*+'{no,}"tls-ca=[enable remote server's TLS certificate validation]:file:_files"
+  '*+'{no,}"tls-hostname=[explicitly set the expected TLS hostname]:hostname"
+  '*+'{no,}'tls-certfile=[load client TLS certificate chain from file]:file:_files'
+  '*+'{no,}'tls-keyfile=[load client TLS private key from file]:file:_files'
   '*+tries=[specify number of UDP query attempts]:tries'
   '*+retry=[specify number of UDP query retries]:retries'
   '*+'{no,}'rrcomments[set display of per-record comments]'
@@ -65,7 +78,6 @@ local -a alts args
   '*+'{no,}'nsid[include EDNS name server ID request in query]'
   '*+'{no,}'ttlid[display the TTL whening printing the record]'
   '*+'{no,}'ttlunits[display the TTL in human-readable units]'
-  '*+'{no,}'unexpected[print replies from unexpected sources]'
   '*+'{no,}'unknownformat[print RDATA in RFC 3597 "unknown" format]'
   '*+'{no,}'yaml[present the results as YAML]'
   '*+'{no,}'zflag[set Z flag in query]'
diff --git a/Completion/Unix/Command/_dmidecode b/Completion/Unix/Command/_dmidecode
index 047b74f6d..e2c511313 100644
--- a/Completion/Unix/Command/_dmidecode
+++ b/Completion/Unix/Command/_dmidecode
@@ -4,6 +4,7 @@ _arguments -s \
   '(-d --dev-mem --from-dump)'{-d+,--dev-mem=}'[read memory from specified file]:memory device [/dev/mem]:_files' \
   '(-)'{-h,--help}'[display usage information]' \
   '(-q --quiet -u --dump)'{-q,--quiet}'[be less verbose]' \
+  '--no-quirks[decode everything without quirks]' \
   '(-t --type -H --handle -u --dump --dump-bin -s --string)'{-s+,--string=}'[only display value of specified DMI string]:DMI string:(bios-vendor bios-version bios-release-date system-manufacturer system-product-name system-version system-serial-number system-uuid baseboard-manufacturer baseboard-product-name baseboard-version baseboard-serial-number baseboard-asset-tag chassis-manufacturer chassis-type chassis-version chassis-serial-number chassis-asset-tag processor-family processor-manufacturer processor-version processor-frequency)' \
   '(-s --string -H --handle --dump-bin)*'{-t+,--type=}'[only display entries of specified type]:entry type:(bios system baseboard chassis processor memory cache connector slot)' \
   '(-s --string -t --type -H --handle --dump-bin)'{-H,--handle=}'[only display the entry of specified handle]:handle' \
diff --git a/Completion/Unix/Command/_enscript b/Completion/Unix/Command/_enscript
index 3e09da5a4..4658ae4bc 100644
--- a/Completion/Unix/Command/_enscript
+++ b/Completion/Unix/Command/_enscript
@@ -128,7 +128,7 @@ case "$state" in
     local suf='{'
     compquote suf
     if [[ ${PREFIX} = *[%$]D${suf}[^}]# ]]; then
-      _strftime
+      _date_formats
     elif [[ ${(Q)PREFIX} = *\$\([^\)]# ]]; then
       compset -P '*\('
       _parameters -g '*export*' -S '\)'
diff --git a/Completion/Unix/Command/_flac b/Completion/Unix/Command/_flac
index 82b6f0160..1773061ee 100644
--- a/Completion/Unix/Command/_flac
+++ b/Completion/Unix/Command/_flac
@@ -85,6 +85,7 @@ case $service in
       '(-p --qlp-coeff-precision-search -q --qlp-coeff-precision)'{-p,--qlp-coeff-precision-search}'[exhaustively search LP coeff quantization]' \
       '(-p --qlp-coeff-precision-search -q --qlp-coeff-precision)'{-q,--qlp-coeff-precision=}'[specify precision]:precision (bits)' \
       '(-r --rice-partition-order)'{-r,--rice-partition-order=}'[set min/max residual partition order]:order' \
+      "--limit-min-bitrate[don't allow frames consisting of only constant subframes]" \
       '--endian=:byte order:(big little)' \
       '--channels=:channels' \
       '--bps=:bits per sample' \
diff --git a/Completion/Unix/Command/_getent b/Completion/Unix/Command/_getent
index b96852db3..5604e526e 100644
--- a/Completion/Unix/Command/_getent
+++ b/Completion/Unix/Command/_getent
@@ -8,6 +8,7 @@ typeset -A opt_args
 if _pick_variant -r is_gnu gnu='(Free Soft|GNU|GLIBC|Gentoo)' unix --version; then
   args+=(
     '(- 1 *)'{-\?,--help}'[display help information]'
+    '(-A --no-addrconfig)'{-A,--no-addrconfig}"[don't filter out unsupported IPv4/IPv6 addresses (with ahosts*)]"
     '(- 1 *)--usage[display a short usage message]'
     '(- 1 *)'{-V,--version}'[display version information]'
     '*'{-s+,--service=}'[specify service configuration to use]: :->services'
@@ -23,7 +24,7 @@ case $state in
   services)
     # @todo GNU getent supports both `-s svc` and `-s db:svc`; we only complete
     # the former here
-    services=( {,/usr}/lib/{,*-linux-gnu/}libnss_*(N-.:fr:t:s/libnss_//) )
+    services=( {,/usr}/lib{,64}/{,*-linux-gnu/}libnss_*(N-.:fr:t:s/libnss_//) )
     _wanted services expl 'service or database:service' \
       compadd ${(u)services%-*} \
     && ret=0
diff --git a/Completion/Unix/Command/_gnutls b/Completion/Unix/Command/_gnutls
index b9f91264d..9b8bcf6ea 100644
--- a/Completion/Unix/Command/_gnutls
+++ b/Completion/Unix/Command/_gnutls
@@ -4,8 +4,7 @@ local -a args
 
 args=(
   '(- :)'{-h,--help}'[display help information]'
-  '(- :)--version=[display version information]:information:((v\:simple c\:copyright n\:full))'
-  '(- :)-v[display version information]'
+  '(- :)'{-v+,--version=-}'[display version information]:information:((v\:simple c\:copyright n\:full))'
   '(- :)'{-\!,--more-help}'[display help information through a pager]'
   '(-d --debug)'{-d,--debug}'[enable debugging]:debug level'
   \*{-V,--verbose}'[more verbose output]'
@@ -17,6 +16,11 @@ case "$service" in
       '(-p --port)'{-p,--port}'[specify port or service to connect to]:port:_ports'
     )
   ;|
+  gnutls-*|certtool)
+    args+=(
+      '--attime=[perform validation at the timestamp instead of the system time]:timestamp'
+    )
+  ;|
   gnutls-cli*)
     args+=(
       '(--app-proto --starttls-proto)'{--app-proto,--starttls-proto}"=[specify application protocol to use to obtain the server's certificate]:protocol:(https ftp smtp imap ldap xmpp lmtp pop3 nntp sieve postgres)"
@@ -30,6 +34,7 @@ case "$service" in
       '(-u --udp)'{-u,--udp}'[use DTLS (datagram TLS) over UDP]'
       '--mtu=[set MTU for datagram TLS]:mtu'
       '--srtp-profiles=[offer SRTP profiles]:string'
+      '*--compress-cert=[compress certificate]:compression method'
       '(-b --heartbeat)'{-b,--heartbeat}'[activate heartbeat support]'
       '--x509fmtder[use DER format for certificates to read from]'
       '--priority=[specify TLS algorithms and protocols to enable]:(NORMAL PFS SECURE128 SECURE192 SUITEB128 SUITEB192 LEGACY PERFORMANCE NONE)'
@@ -94,7 +99,8 @@ case "$service" in
       '--post-handshake-auth[enable post-handshake authentication under TLS1.3]'
       '--inline-commands[inline commands of the form ^<cmd>^]'
       '--inline-commands-prefix=[change delimiter used for inline commands]:delimiter [^]'
-      '--fips140-mode[report status of FIPS140-2 mode in gnutls library]'
+      '--fips140-mode[report status of FIPS140-3 mode in gnutls library]'
+      '--list-config[report configuration of the library]'
       '--logfile=[redirect informational messages to a specific file]:file:_files'
       '--waitresumption[block waiting for the resumption data under TLS1.3]'
       '--ca-auto-retrieve[enable automatic retrieval of missing CA certificates]'
@@ -127,6 +133,7 @@ case "$service" in
       '--ignore-ocsp-response-errors[ignore any errors when setting the OCSP response]'
       '--recordsize=[specify maximum record size to advertise]:record size (0-16384)'
       '--httpdata=[specify data to use as HTTP response]:file:_files'
+      '--timeout=[specify he timeout period for server]:timeout'
     )
   ;;
 
diff --git a/Completion/Unix/Command/_gpg b/Completion/Unix/Command/_gpg
index 5d54865d5..2161d2d24 100644
--- a/Completion/Unix/Command/_gpg
+++ b/Completion/Unix/Command/_gpg
@@ -93,6 +93,7 @@ fi
   '--no-default-recipient[reset default recipient]'
   '*--encrypt-to[specify recipient]:key:->public-keys'
   '(--encrypt-to)--no-encrypt-to[disable the use of all --encrypt-to keys]'
+  '--group[set up email aliases]:spec'
   '-z[specify compression level]:compression level:((0\:no\ compression 1\:minimum 2 3 4 5 6\:default 7 8 9\:maximum))'
   '(-t --textmode)'{-t,--textmode}'[use canonical text mode]'
   '(-n --dry-run)'{-n,--dry-run}"[don't make any changes]"
@@ -117,6 +118,7 @@ fi
   '--utf8-strings' '--no-utf8-strings[arguments are not in UTF8]'
   '(--no-options)--options[specify file to read options from]:options file:_files'
   "(--options)--no-options[don't read options file]"
+  '--log-file[write server mode logs to file]:file:_files'
   '--'{attribute,passphrase,command}'-fd:file descriptor:_file_descriptors'
   '--sk-comments[include secret key comments when exporting keys]'
   '(--emit-version)--no-emit-version[omit version string in clear text signatures]'
@@ -170,6 +172,9 @@ fi
   '--ctapi-driver[file to use to access smartcard reader]:file:_files'
   '--pcsc-driver[file to use to access smartcard reader]:file:_files'
   '--auto-key-locate:parameters'
+  '--auto-key-import[import missing key from a signature]'
+  '--include-key-block[include the public key in signatures]'
+  '--disable-dirmngr[disable all access to the dirmngr]'
   '--dump-options[show all options]'
 )
 
diff --git a/Completion/Unix/Command/_gprof b/Completion/Unix/Command/_gprof
index a7e602fd5..6b97506a6 100644
--- a/Completion/Unix/Command/_gprof
+++ b/Completion/Unix/Command/_gprof
@@ -4,7 +4,7 @@ local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
 _arguments -C -s -{a,b,c,D,h,i,l,L,r,s,T,v,w,x,y,z} \
-           -{A,C,e,E,f,F,J,n,N,O,p,P,q,Q,R,S,t,Z}:'function name:->funcs' \
+           -{A,B,C,e,E,f,F,J,n,N,O,p,P,q,Q,R,S,t,Z}:'function name:->funcs' \
 	   '-I:directory:_dir_list' \
 	   '-d-:debug level:' '-k:function names:->pair' \
 	   '-m:minimum execution count:' \
diff --git a/Completion/Unix/Command/_install b/Completion/Unix/Command/_install
index 238b8b5bc..881c99620 100644
--- a/Completion/Unix/Command/_install
+++ b/Completion/Unix/Command/_install
@@ -27,6 +27,7 @@ if _pick_variant gnu='Free Soft' unix --version; then
     '(-b --backup)--backup=[create backup; optionally specify method]:: :->controls'
     "${lx}--context=-[like -Z, or specify SELinux security context to set]::SELinux security context:_selinux_contexts -a file_type"
     '-D[create all leading destination path components]'
+    '--debug[explain how a file is copied. Implies -v]'
     '(: -)--help[display help information]'
     "${lx}--preserve-context[preserve SELinux security context]"
     '--strip-program=[specify program used to strip binaries]:strip program:_files'
diff --git a/Completion/Unix/Command/_less b/Completion/Unix/Command/_less
index 69f75fd0e..8772f5771 100644
--- a/Completion/Unix/Command/_less
+++ b/Completion/Unix/Command/_less
@@ -56,7 +56,7 @@ _arguments -S -s -A "[-+]*"  \
   '(-L --no-lessopen)'{-L,--no-lessopen}'[ignore the LESSOPEN environment variable]' \
   '(-M --LONG-PROMPT -m --long-prompt)'{-m,--long-prompt}'[prompt verbosely]' \
   '(-m --long-prompt -M --LONG-PROMPT)'{-M,--LONG-PROMPT}'[prompt very verbosely]' \
-  '(-N --LINE-NUMBERS -n --line-numbers)'{-n,--line-numbers}"[don't keep track of line numbers]" \
+  '(-N --LINE-NUMBERS -n --line-numbers)'{-n,--line-numbers}'[suppress line numbers in prompts and messages]' \
   '(-n --line-numbers -N --LINE-NUMBERS)'{-N,--LINE-NUMBERS}'[show line numbers]' \
   '(* -O --LOG-FILE -o --log-file)'{-o+,--log-file=}'[copy input to file]:file:_files' \
   '(* -o --log-file -O --LOG-FILE)'{-O+,--LOG-FILE=}'[copy input to file, overwriting if necessary]:file:_files' \
@@ -83,18 +83,39 @@ _arguments -S -s -A "[-+]*"  \
   '(-\" --quotes)'{'-\"+',--quotes=}'[change quoting character]:quoting characters' \
   '(-~ --tilde)'{-~,--tilde}"[don't display tildes after end of file]" \
   '(-\# --shift)'{'-\#+',--shift=}"[specify amount to move when scrolling horizontally]:number" \
+  '--exit-follow-on-close[exit F command on a pipe when writer closes pipe]' \
   '--file-size[automatically determine the size of the input file]' \
+  '--header=[set header size]:lines,columns' \
   '--incsearch[search file as each pattern character is typed in]' \
+  '--intr=[specify interrupt character instead of ^X]:char [^X]' \
   '--line-num-width=[set the width of line number field]:width [7]' \
+  '--modelines=[look for vim modelines]:lines to search' \
   '--follow-name[the F command changes file if the input file is renamed]' \
   '--mouse[enable mouse input]' \
   '--no-histdups[remove duplicates from command history]' \
+  "--no-number-headers[don't give line numbers to header lines]" \
+  "--no-search-headers[don't search in header lines or columns]" \
+  "--no-vbell[disable the terminal's visual bell]" \
+  '--redraw-on-quit[redraw final screen when quitting]' \
   '--rscroll=[set the character used to mark truncated lines]:character [>]' \
   '--save-marks[retain marks across invocations of less]' \
+  '--search-options=[set default options for every search]: : _values -s ""
+    "search option"
+    "E[multi-file]" "F[from first line]" "K[highlight]"
+    "N[non-matching]" "R[literal]" "W[wrap]" -' \
+  '--show-preproc-errors[display a message if preprocessor exits with an error status]' \
+  '--proc-backspace[process backspaces for bold/underline]' \
+  '--SPECIAL-BACKSPACE[treat backspaces as control characters]' \
+  '--proc-return[delete carriage returns before newline]' \
+  '--SPECIAL-RETURN[treat carriage returns as control characters]' \
+  '--proc-tab[expand tabs to spaces]' \
+  '--SPECIAL-TAB[treat tabs as control characters]' \
   '--status-col-width=[set the width of the -J status column]:width [2]' \
+  '--status-line[highlight or color the entire line containing a mark]' \
   '--use-backslash[subsequent options use backslash as escape char]' \
   '--use-color[enable colored text]' \
   '--wheel-lines=[specify lines to move for each click of the mouse wheel]:lines' \
+  '--wordwrap[wrap lines at spaces]' \
   "$files[@]" && ret=0
 
 
diff --git a/Completion/Unix/Command/_lsof b/Completion/Unix/Command/_lsof
index 8afb55e1d..60f59a589 100644
--- a/Completion/Unix/Command/_lsof
+++ b/Completion/Unix/Command/_lsof
@@ -9,6 +9,7 @@ case $OSTYPE in
       '-E[display endpoint info for pipes, sockets and pseudoterminal files but not files of the endpoints]'
       '+E[display endpoint info for pipes, sockets and pseudoterminal files including files of the endpoints]'
       '-X[skip reporting of info on network connections]'
+      '*-Z[display or filter by SELinux security context]::context pattern:_selinux_contexts -a domain'
     )
   ;;
   solaris*)
@@ -23,7 +24,6 @@ _arguments -C -s -S $args \
   '(-)'{-\?,-h}'[list help]' \
   '-a[AND selections]' \
   '-b[avoid kernel blocks]' \
-  '-C[disable reporting of path name components]' \
   '+c[truncate command name to specified characters]:characters' \
   '-c[list files with specified command name beginning]:command name' \
   '+d[search for open instances for contents of specified dir]:search directory:_files -/' \
@@ -31,16 +31,19 @@ _arguments -C -s -S $args \
   '+D[recursively search from specified dir]:search directory:_files -/' \
   '-D[direct use of device cache file]:function:((\?\:report\ device\ cache\ file\ paths b\:build\ the\ device\ cache\ file i\:ignore\ the\ device\ cache\ file r\:read\ the\ device\ cache\ file u\:read\ and\ update\ the\ device\ cache\ file))' \
   '*-+e[exempt filesystem from blocking kernel calls]:file system:_directories' \
+  '-+E[show endpoint information for pipes, sockets, ptys, mqueues and eventfds; with -E, omit endpoint files]' \
   '-f[inhibit listing of kernel file structure info]::info type:->file-structures' \
   '+f[enable listing of kernel file structure info]::info type:->file-structures' \
   '-F[select output fields]:fields:->fields' \
   '-g[select by process group id]::process group id:_sequence -s , _pgids' \
+  '-H[print human readable sizes]' \
   '(*)*-i[select internet files]::address:->addresses' \
   '-K+[select listing of tasks of processes]::value:((i\:ignore\ tasks))' \
   '-k[specify kernel name list file]:kernel file:_files' \
   '-l[inhibit conversion of UIDs to user names]' \
   '-L[list no link counts]' \
   '+L[list all link counts]::max link count for listed files' \
+  '+m[specify or write a mount supplement file]::mount supplement file:_files' \
   '-m[specify kernel memory file]:kernel memory file:_files' \
   '-M[disable reporting of portmapper registrations]' \
   '+M[enable reporting of portmapper registrations]' \
@@ -49,6 +52,7 @@ _arguments -C -s -S $args \
   '(-s)-o[list file offset]::digits for file offset' \
   '-O[avoid overheads of bypassing potential blocking]' \
   '-P[inhibit conversion of port numbers to port names]' \
+  '-Q[ignore failed search terms]' \
   '-p[list files for specified processes]:process ID:_sequence -s , _pids' \
   '-r[repeat listing endlessly]::delay (seconds)' \
   '+r[repeat listing until no files listed]::delay (seconds)' \
diff --git a/Completion/Unix/Command/_lua b/Completion/Unix/Command/_lua
index 7254d3819..3a1ef4fd7 100644
--- a/Completion/Unix/Command/_lua
+++ b/Completion/Unix/Command/_lua
@@ -41,6 +41,7 @@ _lua() {
   _arguments -S -A '-*' : \
     '*-e+[execute specified command string]:command string' \
     '-E[ignore environment variables]' \
+    '-W[turn warnings on]' \
     '-i[enter interactive mode]' \
     '*-l+[specify library or module to require]: :_lua_libraries' \
     '-v[display version information]' \
diff --git a/Completion/Unix/Command/_mpc b/Completion/Unix/Command/_mpc
index 7f7adc7b4..c3f93878c 100644
--- a/Completion/Unix/Command/_mpc
+++ b/Completion/Unix/Command/_mpc
@@ -26,6 +26,7 @@ _mpc_command() {
 
   mpc_cmds=(
     add:"append a song to the end of the current playlist"
+    albumart:"download album art for the given song and write to stdout"
     cdprev:"compact disk player-like previous command"
     channels:"list the channels that other clients have subscribed to"
     clear:"clear the current playlist"
@@ -57,6 +58,7 @@ _mpc_command() {
     prio:"change song priorities in the queue"
     queued:"show the next queued song"
     random:"toggle random mode, or specify state"
+    readpicture:"download a picture from the given song and write to stdout"
     repeat:"toggle repeat mode, or specify state"
     single:"toggle single mode, or specify state"
     consume:"toggle consume mode, or specify state"
@@ -205,6 +207,10 @@ _mpc_add() {
   _mpc_helper_files
 }
 
+_mpc_albumart() {
+  _mpc_helper_files
+}
+
 _mpc_del() {
   _mpc_helper_songnumbers
 }
@@ -304,8 +310,14 @@ _mpc_random() {
   _mpc_helper_bool
 }
 
+_mpc_readpicture() {
+  _mpc_helper_files
+}
+
 _mpc_single() {
-  _mpc_helper_bool
+  local state
+  _description states expl state
+  compadd "$@" "$expl[@]" on once off
 }
 
 _mpc_consume() {
diff --git a/Completion/Unix/Command/_nm b/Completion/Unix/Command/_nm
index b142c1d54..a78eb7068 100644
--- a/Completion/Unix/Command/_nm
+++ b/Completion/Unix/Command/_nm
@@ -18,7 +18,7 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu
     '(-f --format -P --portability)-B[same as --format=bsd]'
     '(-u --undefined-only)--defined-only[display only defined symbols]'
     '(-n --numeric-sort -p --no-sort --size-sort -v)'{-n,--numeric-sort}'[sort symbols numerically by address]'
-    '(-p --no-sort -n -v --numeric-sort -r --reverse-sort --size-sort)'{-p,--no-sort}'[do not sort symbols]'
+    '(-p --no-sort -n -v --numeric-sort -r --reverse-sort --size-sort)'{-p,--no-sort}"[don't sort symbols]"
     '(-P --portability -B -f --format)'{-P,--portability}'[same as --format=posix]'
     '(-r --reverse-sort -p --no-sort)'{-r,--reverse-sort}'[reverse sort order]'
     '(-u --undefined-only --defined-only)'{-u,--undefined-only}'[display only undefined symbols]'
@@ -60,10 +60,10 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu
       args+=(
         '!(--no-recurse-limit)--recurse-limit'
         '--no-recurse-limit[disable demangling recursion limit]'
-	'(-f --format -P -j)'{-f,--format}'[specify output format]:format:(bsd sysv posix just-symbols)'
-	'(-C --no-demangle)--demangle=-[decode symbol names]::style [auto]:(auto gnu lucid arm hp edg gnu-v3 java gnat rust dlang)'
+        '(-f --format -P -j --just-symbols)'{-f+,--format=}'[specify output format]:format [bsd]:(bsd sysv posix just-symbols)'
+        '(-C --no-demangle)--demangle=-[decode symbol names]::style [auto]:(none auto gnu-v3 java gnat dlang rust)'
         '--ifunc-chars=[specify characters to use for indirect function symbols]:characters for global/local indirect function symbols [ii]'
-	'(-B -f --format -P --portability -j --just-symbols)'{-j,--just-symbols}'[Same as --format=just-symbols]'
+        '(-B -f --format -P --portability -j --just-symbols)'{-j,--just-symbols}'[same as --format=just-symbols]'
 	'--plugin[load specified plugin]:plugin'
 	'--quiet[suppress no "no symbols" diagnostic]'
 	'--special-syms[include special symbols in the output]'
diff --git a/Completion/Unix/Command/_objdump b/Completion/Unix/Command/_objdump
index e2dde7e4c..94c01eb83 100644
--- a/Completion/Unix/Command/_objdump
+++ b/Completion/Unix/Command/_objdump
@@ -38,8 +38,10 @@ case $variant in
 
       '*-W-[display DWARF info in the file]::dwarf section:->short-dwarf-names'
       '*--dwarf=-[display DWARF info in the file]::dwarf section:->dwarf-names'
+      '(-L --process-links)'{-L,--process-links}'[display the contents of non-debug sections in separate debuginfo files]'
 
-      '--ctf=[display compact C type format info for section]:section'
+      '--ctf=-[display compact C type format info for section]::section'
+      '--sframe=-[display SFrame info from section]::section name [.sframe]'
       '(-t --syms)'{-t,--syms}'[display the contents of the symbol table(s)]'
       '(-T --dynamic-syms)'{-T,--dynamic-syms}'[display the contents of the dynamic symbol table]'
       '(-R --dynamic-reloc)'{-R,--dynamic-reloc}'[display the dynamic relocation entries in the file]'
@@ -59,11 +61,13 @@ case $variant in
       \*{-I+,--include=}'[add directory to search list for source files]:directory:_files -/'
       '(-l --line-numbers)'{-l,--line-numbers}'[include line numbers and filenames in output]'
       '(-F --file-offsets)'{-F,--file-offsets}'[include file offsets when displaying information]'
-      '(-C --demangle)-C[decode mangled/processed symbol names]'
-      '(-C --demangle)--demangle=-[decode mangled/processed symbol names]::style:(auto gnu lucid arm hp edg gnu-v3 java gnat rust dlang)'
+      '(--demangle)-C[decode symbol names]'
+      '(-C)--demangle=-[decode symbol names]::style [auto]:(none auto gnu-v3 java gnat dlang rust)'
       '!(--no-recurse-limit)--recurse-limit'
       '--no-recurse-limit[disable demangling recursion limit]'
       '(-w --wide)'{-w,--wide}'[format output for more than 80 columns]'
+      '-U+[specify how to display unicode characters]:method:(d l e x h i)'
+      '--unicode=[specify how to display unicode characters]:method:(default locale escape hex highlight invalid)'
       '(-z --disassemble-zeroes)'{-z,--disassemble-zeroes}"[don't skip blocks of zeroes when disassembling]"
 
       '--start-address=[only process data whose address is >= ADDR]:address'
@@ -73,15 +77,17 @@ case $variant in
       '(--show-raw-insn --no-show-raw-insn)'--{,no-}show-raw-insn'[display hex alongside symbolic disassembly]'
       '--insn-width=[display specified number of bytes on a single line with -d]:width (bytes)'
       '--adjust-vma=[add offset to all displayed section addresses]:offset'
+      '--show-all-symbols[when disassembling, display all symbols at a given address]'
       '--special-syms[include special symbols in symbol dumps]'
       '--inlines[print all inlines for source line (with -l)]'
       '--prefix=[add prefix to absolute paths for -S]:prefix'
       '--prefix-strip=[strip initial directory names for -S]:level'
       "--dwarf-depth=[don't display DIEs at specified or greater depth]:depth"
       '--dwarf-start=[display DIEs at specified or deeper depth]:depth'
-      '--dwarf-check[perform additional dwarf internal consistency checks]'
+      '--dwarf-check[perform additional dwarf consistency checks]'
       '--ctf-parent=[use specified section as the CTF parent]:section'
       '--visualize-jumps=-[visualize jumps by drawing ASCII art lines]::color:(color extended-color off)'
+      '--disassembler-color=[control use of colored syntax highlighting in disassembly output]:color use [on]:(off terminal on extended)'
     )
   ;;
   elfutils)
diff --git a/Completion/Unix/Command/_pandoc b/Completion/Unix/Command/_pandoc
index b0fff80d6..797e73eaa 100644
--- a/Completion/Unix/Command/_pandoc
+++ b/Completion/Unix/Command/_pandoc
@@ -113,7 +113,7 @@ _pandoc_defaults_file() {
 
 # choose reference location
 (( $+functions[_pandoc_reference_location] )) ||
-_pandoc_reference_location(){
+_pandoc_reference_location() {
   local -a policies
   policies=(
     'block:place references at the end of the current (top-level) block'
@@ -123,22 +123,16 @@ _pandoc_reference_location(){
   _describe 'location' policies
 }
 
-# choose top level division
-(( $+functions[_pandoc_top_level_division] )) ||
-_pandoc_top_level_division(){
-  _values 'top level division' default section chapter part
-}
-
 # choose email obfusication
 (( $+functions[_pandoc_email_obfusication] )) ||
 _pandoc_email_obfusication(){
   local -a policies
   policies=(
-    'none:leave mailto: links as they are'
-    'javascript:obfuscates them using JavaScript'
-    'references:obfuscates them by printing their letters as decimal or hexadecimal character references'
+    'none:leave mailto: links as-is'
+    'javascript:obfuscate using JavaScript'
+    'references:obfuscate by printing letters as decimal or hexadecimal character references'
   )
-  _describe 'obfuscation policy [none]' policies
+  _describe 'e-mail obfuscation policy [none]' policies
 }
 
 # choose wrapping policy
@@ -181,26 +175,26 @@ _pandoc_track_changes() {
 _arguments -s \
   {-f+,-r+,--from=,--read=}'[specify input format]: :_pandoc_format -T input' \
   {-t+,-w+,--to=,--write=}'[specify output format]: :_pandoc_format -T output' \
-  {-o+,--output=}'[write output to FILE instead of stdout]:file:_files' \
+  {-o+,--output=}'[write output to specified file instead of stdout]:file:_files' \
   '--data-dir=[specify the user data directory to search for pandoc data files]:data directory:_files -/' \
   {-d+,--defaults=}'[read default from YAML file]: :_pandoc_defaults_file' \
   '--shift-heading-level-by=[shift heading levels by specified number]:positive or negative integer: ' \
   '!--base-header-level=:number [1]:(1 2 3 4 5)' \
-  '!--strip-empty-paragraphs[deprecated. Use the +empty_paragraphs extension instead]' \
-  '--indented-code-classes=[classes to use for indented code blocks]:class list (comma-separated)' \
+  '--indented-code-classes=[specify classes to use for indented code blocks]:class list (comma-separated)' \
   '--default-image-extension=[specify a default extension to use when image paths/URLs have no extension]:extension: ' \
   '--file-scope[parse each file individually before combining for multifile documents]' \
+  '--sandbox=-[run in a sandbox, limiting IO operations]::enable:(true false)' \
   {\*-F+,\*--filter=}'[specify an executable to be used as a filter transforming the pandoc AST after the input is parsed and before the output is written]: :_pandoc_filter' \
   {\*-L+,\*--lua-filter=}"[transform the document by using pandoc's built-in lua filtering system]: :_pandoc_lua_filter" \
   {\*-M+,\*--metadata=}'[set the metadata field KEY to the value VALUE]:key\:value: ' \
   '*--metadata-file=[read metadata from file]:YAML or JSON file:_files' \
   {-p,--preserve-tabs}'[preserve tabs instead of converting them to spaces]' \
   '--tab-stop=[specify the number of spaces per tab]:spaces [4]' \
-  '--track-changes=[specifies what to do with insertions, deletions, and comments produced by the MS Word "Track Changes" feature]: :_pandoc_track_changes' \
+  '--track-changes=[specify what to do with insertions, deletions, and comments produced by the MS Word "Track Changes" feature]: :_pandoc_track_changes' \
   '--extract-media=[extract media in source document to specified directory]:directory:_files -/' \
-  '--abbreviations=[specifies a custom abbreviations file]:file:_files ' \
+  '--abbreviations=[specify a custom abbreviations file]:file:_files ' \
   {-s,--standalone}'[produce output with an appropriate header and footer]' \
-  '--template=[use FILE as a custom template for the generated document. Implies --standalone]: :_pandoc_template' \
+  '--template=[use specified file as a custom template for the generated document. Implies --standalone]: :_pandoc_template' \
   {\*-V+,\*--variable=}'[set the variable KEY to the value VALUE]:key\:value: ' \
   '(- :)'{-D+,--print-default-template=}'[print the system default template for an output]:format:( $(pandoc --list-output-formats) )' \
   '(- :)--print-default-data-file=[print a system default data file]:file: ' \
@@ -211,43 +205,48 @@ _arguments -s \
   {--toc,--table-of-contents}'[include an automatically generated table of contents]' \
   '--toc-depth=[specify the number of section levels to include in the table of contents]:number' \
   '--strip-comments[strip out HTML comments in the Markdown or Textile source]' \
-  '--no-highlight[disables syntax highlighting for code blocks and inlines]' \
-  '--highlight-style=[specifies the coloring style to be used in highlighted source code]:style|file:_pandoc_highlight_style' \
+  '--no-highlight[disable syntax highlighting for code blocks and inlines]' \
+  '--highlight-style=[specify coloring style to be used in highlighted source code]: :_pandoc_highlight_style' \
   '(- :)--print-highlight-style=[prints a JSON version of a highlighting style]: :_pandoc_highlight_style' \
   '--syntax-definition=[load a KDE XML syntax definition file]:file:_files -g "*.xml(-.)"' \
-  {\*-H+,\*--include-in-header=}'[include contents of FILE, verbatim, at the end of the header, implies --standalone]:file:_files' \
-  {\*-B+,\*--include-before-body=}'[include contents of FILE, verbatim, at the beginning of the document body, implies --standalone]:file:_files' \
-  {\*-A+,\*--include-end-body=}'[include contents of FILE, verbatim, at the end of the document body, implies --standalone]:file:_files' \
+  \*{-H+,--include-in-header=}'[include contents of file, verbatim, at the end of the header, implies --standalone]:file:_files' \
+  \*{-B+,--include-before-body=}'[include contents of file, verbatim, at the beginning of the document body, implies --standalone]:file:_files' \
+  \*{-A+,--include-end-body=}'[include contents of file, verbatim, at the end of the document body, implies --standalone]:file:_files' \
   '--resource-path=[list of paths to search for images and other resources]:searchpath:_dir_list' \
   '--request-header=[set the request header NAME to the value VAL when making HTTP requests]:name\:val: ' \
   '--no-check-certificate[disable the certificate verification]' \
   '--self-contained[produce a standalone HTML file with no external dependencies, using data: URIs to incorporate the contents of linked scripts, stylesheets, images, and videos. Implies --standalone]' \
+  '--embed-resources=-[produce a standalone HTML document with no external dependencies]::enable:(true false)' \
   '--html-q-tags[use <q> tags for quotes in HTML]' \
   '--ascii[use only ASCII characters in output, supported only for HTML and DocBook output]' \
   '--reference-links[use reference-style links, rather than inline links]' \
   '--reference-location=[specify where footnotes (and references, if reference-links is set) are placed (block|section|document)]: :_pandoc_reference_location' \
   '--markdown-headings[specify style for level1 and 2 headings in markdown output]:style [atx]:(setext atx)' \
-  '!--atx-headers[use ATX-style headers in Markdown and AsciiDoc output]' \
-  '--top-level-division=[treat top-level headers as the given division type in LaTeX, ConTeXt, DocBook, and TEI output]: :_pandoc_top_level_division' \
+  '--list-tables=-[render tables as list tables in RST output]::enable(true false)' \
+  '--top-level-division=[treat top-level headers as given division type in LaTeX, ConTeXt, DocBook and TEI output]:top level division:(default section chapter part)' \
   {-N,--number-sections}'[number section headings in LaTeX, ConTeXt, HTML, or EPUB output]' \
-  '--number-offset=[offset for section headings in HTML output (ignored in other output formats)]:number[number,...] [0]' \
+  '--number-offset=[specify offset for section headings in HTML output (ignored in other output formats)]:number[number,...] [0]' \
   '--listings[use the listings package for LaTeX code blocks]' \
   {-i,--incremental}'[make list items in slide shows display incrementally (one by one)]' \
-  '--slide-level=[specifies that headers with the specified level create slides (for beamer, s5, slidy, slideous, dzslides)]:slide level:(1 2 3 4 5 6)' \
-  '--section-divs[wrap sections in <section> tags (or <div> tags for html4)Use the section-divs package for LaTeX code blocks]' \
-  '--email-obfusication=[treat top-level headers as the given division type in LaTeX, ConTeXt, DocBook, and TEI output (none|javascript|references)]: :_pandoc_email_obfusication' \
+  '--slide-level=[divide into slides for headers above the specified level (for beamer, s5, slidy, slideous, dzslides)]: :_pandoc_header_levels' \
+  '--section-divs[wrap sections in <section> tags (or <div> tags for html4)]' \
+  '--email-obfusication=[specify method for obfusicating mailto: links in HTML documents]: :_pandoc_email_obfusication' \
   '--id-prefix=[specify a prefix to be added to all identifiers and internal links in HTML and DocBook output]:string: ' \
   {-T+,--title-prefix=}'[specify STRING as a prefix at the beginning of the title that appears in the HTML header]:string: ' \
   {\*-c+,\*--css=}'[link to a CSS style sheet]: :_urls' \
-  '--reference-doc=[use the specified file as a style reference in producing a docx or ODT file]:file: ' \
+  '--reference-doc=[use specified file as a style reference in producing a docx or ODT file]:file:_files' \
   '--epub-subdirectory=[specify the subdirectory in the OCF container that is to hold the EPUB-specific contents]:directory:_files -/' \
   '--epub-cover-image=[use the specified image as the EPUB cover]:file:_files' \
+  '--epub-title-page=-[determine whether title page is included in EPUB]::enable [true]:(true false)' \
   '--epub-metadata=[look in the specified XML file for metadata for the EPUB]:file:_files -g "*.xml(-.)"' \
   '*--epub-embed-font=[embed the specified font in the EPUB]:file:_files ' \
+  '--split-level=[specify heading level at which to split an EPUB or chunked HTML into separate files]:heading level' \
+  '--chunk-template=[specify filename template for a chunked html document]:template' \
   '--epub-chapter-level=[specify the header level at which to split the EPUB into separate "chapter" files]:number:(1 2 3 4 5 6)' \
   '--ipynb-output=[specify how to tread ipynb output cells]:method:(all none best)' \
-  '--pdf-engine=[use the specified engine when producing PDF output]:program:_pandoc_pdf_engine' \
-  '*--pdf-engine-opt=[use the given string as a command-line argument to the pdf-engine]:string:_pandoc_pdf_engine_opts' \
+  '--pdf-engine=[use specified engine when producing PDF output]:program:_pandoc_pdf_engine' \
+  '*--pdf-engine-opt=[use given string as a command-line argument to the pdf-engine]:string:_pandoc_pdf_engine_opts' \
+  '(-C --citeproc)'{-C,--citeproc}'[process citations]' \
   "*--bibliography=[set the bibliography field in the document's metadata to specified file]:file:_files -g '*.(bib|bibtex|copac|json|yaml|enl|xml|wos|medline|mods|ris)(-.)'" \
   "--csl=[set the csl field in the document's metadata to specified file]:file:_files -g '*.csl(-.)'" \
   '--citation-abbreviations=[set the citation-abbreviations field in the document'"'"'s metadata to FILE]:file:_files' \
@@ -257,10 +256,10 @@ _arguments -s \
   '--webtex=[convert TeX formulas to <img> tags that link to an external script that converts formulas to images]:: :_urls' \
   '--mathjax=[use MathJax to display embedded TeX math in HTML output]:: :_urls' \
   '--katex=[use KaTeX to display embedded TeX math in HTML output]:: :_urls' \
-  '--gladtex[Enclose TeX math in <eq> tags in HTML output]' \
+  '--gladtex[enclose TeX math in <eq> tags in HTML output]' \
   '--trace[enable tracing]' \
-  '--dump-args[print information about command-line arguments to stdout, then exit]' \
-  '--ignore-args[ignore command-line arguments (for use in wrapper scripts)]' \
+  '!--dump-args' \
+  '!--ignore-args' \
   '--verbose[give verbose debugging output]' \
   '--quiet[suppress warning messages]' \
   '--fail-if-warnings[exit with error status if there are any warnings]' \
@@ -271,6 +270,7 @@ _arguments -s \
   '(- :)--list-extensions=[list supported extensions, one per line, preceded by a + or - indicating whether it is enabled by default in FORMAT]:format:_pandoc_all_formats' \
   '(- :)--list-highlight-languages[list supported languages for syntax highlighting, one per line]' \
   '(- :)--list-highlight-styles[list supported styles for syntax highlighting, one per line]' \
+  '(- :)--print-highlight-style=[print JSON version of a highlighting style]: :_pandoc_highlight_style' \
   '(- :)'{-v,--version}'[print version]' \
   '(- :)'{-h,--help}'[print help]' \
   '*:file:_files'
diff --git a/Completion/Unix/Command/_perl b/Completion/Unix/Command/_perl
index d7e8f1b51..1631560ce 100644
--- a/Completion/Unix/Command/_perl
+++ b/Completion/Unix/Command/_perl
@@ -17,6 +17,7 @@ _perl () {
     '(1 -e)*-E+[like -e but enable all optional features]:one line of program' \
     '-f[disable executing $Config{sitelib}/sitecustomize.pl at startup]' \
     '-F-[split() pattern for autosplit (-a)]:split() pattern, // is optional' \
+    '-g[read all input in one go (slurp), rather than line-by-line (alias for -0777)]' \
     '-h[list help summary]' \
     '-i-[edit <> files in place (make backup if extension supplied)]:backup file extension: ' \
     '*-I-[specify @INC/#include directory (may be used more than once)]:include path:_files -/' \
diff --git a/Completion/Unix/Command/_pgrep b/Completion/Unix/Command/_pgrep
index 9c3ddf039..94c1dae1a 100644
--- a/Completion/Unix/Command/_pgrep
+++ b/Completion/Unix/Command/_pgrep
@@ -34,6 +34,7 @@ arguments=(
   '(-P --parent)'{-P+,--parent=}'[match only on specified parent process IDs]: :->ppid'
   '(-l)-q[suppress normal output]'
   '(-r --runstates)'{-r+,--runstates}'[match runstates]:run state:compadd -S "" D I R S T t W X Z'
+  '(-A --ignore-ancestors)'{-A,--ignore-ancestors}'[exclude our ancestors from results]'
   '-S[search also in system processes (kernel threads)]'
   '(-s --session)'{-s+,--session=}'[match only on specified process session IDs]: :->sid'
   # _signals is OK here - we do it differently below
@@ -44,6 +45,7 @@ arguments=(
   '(-u --euid)'{-u+,--euid=}'[match only on specified effective user IDs]: :_sequence _users'
   '(-v --inverse)'{-v,--inverse}'[negate matching]'
   '(-x --exact)'{-x,--exact}'[match process name or command line (with -f) exactly]'
+  '--cgroup=[match by cgroup v2 names]:cgroup'
   '--ns=[match only on same namespaces as specified PID]: :_pids'
   '--nslist=[match only on specified namespaces (with --ns)]:namespace:(ipc mnt net pid user uts)'
   '(: * -)'{-V,--version}'[display version information]'
@@ -55,6 +57,8 @@ arguments=(
   '(-w --lightweight)'{-w,--lightweight}'[show all thread IDs instead of PID]'
 )
 [[ $service == pkill ]] && arguments+=(
+  '(-H --require-handler)'{-H,--require-handler}'[match only if signal handler is present]'
+  '(-q --queue)'{-q+,--queue=}'[specify value to be sent with the signal]:value'
   '(-e --echo)'{-e,--echo}'[display signalled process]'
   '-l[display kill command]'
 )
@@ -62,8 +66,8 @@ arguments=(
 case $OSTYPE in
   linux*)
     # Note: We deliberately exclude -v but not --inverse from pkill
-    pgopts=acdFfGghLlnoOPrstUuVvwx-
-    pkopts=ceFfGghLnoOPstUuVx-
+    pgopts=AacdFfGghLlnoOPrstUuVvwx-
+    pkopts=AceFfGgHhLnoOPstUuVx-
     arguments=(
       ${arguments:#((#s)|*\))(\*|)-[acl]*}
       '(-c --count)'{-c,--count}'[display count of matching processes]'
diff --git a/Completion/Unix/Command/_ping b/Completion/Unix/Command/_ping
index d36a0f3a9..84bd76b82 100644
--- a/Completion/Unix/Command/_ping
+++ b/Completion/Unix/Command/_ping
@@ -199,7 +199,9 @@ case ${variant}:${${service#ping}:-4} in
       '-A[adaptive]'
       '-b[allow pinging a broadcast address]'
       "-B[don't allow ping to change source address]"
+      '-C[call connect() syscall on socket creation]'
       '-D[print timestamp before each line]'
+      '-e+[define identifier for ping session]:identifier'
       '(-4)-F+[allocate and set 20-bit flow label]:flow label (hex)'
       '(-)-h[show usage information]'
       '-I+[specify source interface]:interface:_net_interfaces'
diff --git a/Completion/Unix/Command/_ps b/Completion/Unix/Command/_ps
index 905309a12..c3dfae47d 100644
--- a/Completion/Unix/Command/_ps
+++ b/Completion/Unix/Command/_ps
@@ -163,10 +163,12 @@ case $OSTYPE in
       '(-N --deselect)'{-N,--deselect}'[negate selection: all processes except those selected]'
       '*-C[select processes by command name]:command:_sequence -s , _command_names -e'
       '*--ppid[select processes by parent process ID]:parent process:_sequence -S , _pids'
+      '(-D --date-format)'{-D,--date-format=}'[set the date format of the lstart field to format]:format:_strftime'
       '(-f)-F[extra full format listing]'
       '--context[show SELinux security context format]'
       '-M[show security data]'
       '(--forest -H)'{--forest,-H}'[show process hierarchy]'
+      '-P[add psr column]'
       '--headers[repeat header lines, one per page of output]'
       '(--cols --columns --width)'{--cols,--columns,--width}'[set screen width]:width'
       '(--lines --rows)'{--lines,--rows}'[set screen height]'
diff --git a/Completion/Unix/Command/_pv b/Completion/Unix/Command/_pv
index d02d3a35d..b21625650 100644
--- a/Completion/Unix/Command/_pv
+++ b/Completion/Unix/Command/_pv
@@ -17,7 +17,9 @@ _arguments -s -S $args \
   '(-I --fineta -F --format)'{-I,--fineta}'[show absolute estimated time of arrival]' \
   '(-r --rate -F --format)'{-r,--rate}'[show data transfer rate counter]' \
   '(-a --average-rate -F --format)'{-a,--average-rate}'[show data transfer average rate counter]' \
-  '(-b --bytes -F --format)'{-b,--bytes}'[show number of bytes transferred]' \
+  '(-m --average-rate-window)'{-m+,--average-rate-window=}'[compute average rate over period]:duration (seconds) [30]' \
+  '(-b --bytes -8 --bits -F --format)'{-b,--bytes}'[show number of bytes transferred]' \
+  '(-8 --bits -b --bytes -F --format)'{-8,--bits}'[show number of bits transferred]' \
   '(-T --buffer-percent -F --format)'{-T,--buffer-percent}'[show percentage of transfer buffer in use]' \
   '(-A --last-written -F --format)'{-A+,--last-written=}'[show number of bytes last written]:number (bytes)' \
   '(-F --format -p --progress -t --timer -e --eta -I --fineta -r --rate -a --average-rate -b --bytes -T --buffer-percent -A --last-written -F --format)'{-F+,--format=}'[set output format]:format:->formats' \
diff --git a/Completion/Unix/Command/_readelf b/Completion/Unix/Command/_readelf
index fc0fb7ce1..b3abdf0a5 100644
--- a/Completion/Unix/Command/_readelf
+++ b/Completion/Unix/Command/_readelf
@@ -16,10 +16,12 @@ args=(
   '(-V --version-info)'{-V,--version-info}'[show version sections (if present)]'
   '(-A --arch-specific)'{-A,--arch-specific}'[show architecture specific information (if any)]'
   '(-c --archive-index)'{-c,--archive-index}'[show symbol/file index in an archive]'
+  '(-D --use-dynamic)'{-D,--use-dynamic}'[use dynamic section info when showing symbols]'
   \*{-x,--hex-dump=}"[dump contents of specified section as bytes]:section:($sections)"
   \*{-p,--string-dump=}"[dump contents of specified section as strings]:section:($sections)"
-  '-w+[show the contents of DWARF2 debug sections]::debug section:(l L i a p r m f F s o O R t U u T g A c k K)'
-  '--debug-dump=[show the contents of DWARF2 debug sections]::section:(rawline decodedline info abbrev pubnames aranges macro frames frames-interp str loc Ranges pubtypes gdb_index trace_info trace_abbrev trace_aranges addr cu_index links follow-links)'
+  '-w+[show the contents of DWARF2 debug sections]::debug section:(a A r c L f F g i o m p t R l s O u T U k K N)'
+  '--debug-dump=[show the contents of DWARF2 debug sections]::section:(abbrev addr aranges cu_index decodedline frames frames-interp gdb_index info loc macro pubnames pubtypes Ranges rawline str str-offsets trace_abbrev trace_aranges trace_info links follow-links no-follow-links)'
+  '(-P --process-links)'{-P,--process-links}'[display the contents of non-debug sections in separate debuginfo files]'
   '(-I --histogram)'{-I,--histogram}'[show histogram of bucket list lengths]'
   '(-W --wide)'{-W,--wide}'[allow output width to exceed 80 characters]'
   '(- *)'{-H,--help}'[display help information]'
@@ -35,7 +37,6 @@ case $variant in
       '(-s --syms --symbols)'{-s,--syms,--symbols}'[show symbol table]'
       '(-n --notes)'{-n,--notes}'[show core notes (if present)]'
       '(-u --unwind)'{-u,--unwind}'[show unwind info (if present)]'
-      '(-D --use-dynamic)'{-D,--use-dynamic}'[use dynamic section info when showing symbols]'
     )
   ;|
   elfutils|binutils)
@@ -50,11 +51,14 @@ case $variant in
   ;|
   binutils)
     args+=(
+      '--sym-base=[force base for symbol sizes]:base:(0 8 10 16)'
       '!(-C --demangle)--no-demangle'
       '(--demangle)-C[decode symbol names]'
-      '(-C)--demangle=-[decode symbol names]::style [auto]:(auto gnu lucid arm hp edg gnu-v3 java gnat)'
+      '(-C)--demangle=-[decode symbol names]::style [auto]:(none auto gnu-v3 java gnat dlang rust)'
       '!(--no-recurse-limit)--recurse-limit'
       '--no-recurse-limit[disable demangling recursion limit]'
+      '-U+[specify how to display unicode characters]:method:(d l e x h i)'
+      '--unicode=[specify how to display unicode characters]:method:(default locale escape hex highlight invalid)'
       '(-L --lint --enable-checks)'{-L,--lint,--enable-checks}'[display warning messages for possible problems]'
       \*{-R,--relocated-dump=}"[dump contents of specified section as relocated bytes]:section:($sections)"
       "--dwarf-depth=[don't show DIEs at greater than specified depth]:depth"
@@ -63,6 +67,7 @@ case $variant in
       '--ctf-parent=[use specified section as the CTF parent]:section'
       '--ctf-symbols=[use specified section as the CTF external symbol table]:section'
       '--ctf-strings=[use specified section as the CTF external string table]:section'
+      '--sframe=-[display SFrame info from section]::section name [.sframe]'
       '(-T --silent-truncation)'{-T,--silent-truncation}"[if a symbol name is truncated, don't add ... suffix]"
     )
   ;;
diff --git a/Completion/Unix/Command/_rsync b/Completion/Unix/Command/_rsync
index eb906e974..c65266dbd 100644
--- a/Completion/Unix/Command/_rsync
+++ b/Completion/Unix/Command/_rsync
@@ -141,8 +141,9 @@ _rsync() {
     '(-X --xattrs)'{-X,--xattrs}'[preserve extended attributes]' \
     '--fake-super[use xattrs to save all file attributes]' \
     '(-d --dirs)'{-d,--dirs}'[transfer directories without recursing]' \
-    {--no-d,--no-dirs}'[turn off --dirs]' \
-    "--mkpath[create the destination's path component]" \
+    '(--no-d --no-dirs)'{--no-d,--no-dirs}'[turn off --dirs]' \
+    '(--old-dirs --old-d)'{--old-dirs,--old-d}'[work like --dirs when talking to old rsync]' \
+    "--mkpath[create destination's missing path components]" \
     '(-l --links)'{-l,--links}'[copy symlinks as symlinks]' \
     {--no-l,--no-links}'[turn off --links]' \
     '(-L --copy-links)'{-L,--copy-links}'[transform symlinks into referent file/dir]' \
@@ -161,8 +162,10 @@ _rsync() {
     '(-g --group)'{-g,--group}'[preserve group]' \
     {--no-g,--no-group}'[turn off --group]' \
     '(--devices --specials)-D[same as --devices --specials]' \
-    '(-D)--devices[preserve devices]' \
+    '(-D --copy-devices --write-devices)--devices[preserve devices]' \
     '--no-devices[turn off --devices]' \
+    '(-D --devices)--copy-devices[copy device contents as a regular file]' \
+    '(-D --devices)--write-devices[write to devices as files (implies --inplace)]' \
     '(-D)--specials[preserve special files]' \
     '--no-specials[turn off --specials]' \
     '--no-D[turn off --devices and --specials]' \
@@ -179,7 +182,7 @@ _rsync() {
     '(-n --dry-run)'{-n,--dry-run}'[show what would have been transferred]' \
     '(-W --whole-file)'{-W,--whole-file}'[copy files whole (without delta-transfer algorithm)]' \
     {--no-W,--no-whole-file}'[turn off --whole-file]' \
-    '(--cc --checksum-choice)'{--cc,--checksum-choice}'=[choose the checksum algorithms]:algorithm:_sequence -n 2 compadd - auto md4 md5 none' \
+    '(--cc --checksum-choice)'{--cc,--checksum-choice}'=[choose the checksum algorithms]:algorithm:_sequence -n 2 compadd - auto xxh128 xxh3 xxh64 xxhash md4 md5 sha1 none' \
     '(-x --one-file-system)'{-x,--one-file-system}"[don't cross filesystem boundaries]" \
     '(-B --block-size)'{-B+,--block-size=}'[force a fixed checksum block-size]: :_numbers -f -u bytes -d 1g "block size" B K M G T P' \
     '(-e --rsh)'{-e+,--rsh=}'[specify the remote shell to use]:remote-shell command:(rsh ssh)' \
@@ -233,7 +236,8 @@ _rsync() {
     '*--include=[do not exclude files matching pattern]:pattern' \
     '--files-from=[read list of source-file names from specified file]:file:_files' \
     '(-0 --from0)'{-0,--from0}'[all *-from file lists are delimited by nulls]' \
-    '(-s --protect-args)'{-s,--protect-args}'[no space-splitting; only wildcard special-chars]' \
+    '(-s --secluded-args)'{-s,--secluded-args}'[use the protocol to safely send arguments]' \
+    "--trust-sender[trust the remote sender's file list]" \
     '--copy-as=[specify user & optional group for the copy]:user:_rsync_users_groups' \
     '--version[print version number]' \
     '*'{-h,--human-readable}'[output numbers in a human-readable format]' \
@@ -251,6 +255,7 @@ _rsync() {
     '--list-only[list the files instead of copying them]' \
     '--stop-after=[stop copying after specified time has elapsed]:time (minutes)' \
     '--stop-at=[stop copying when specified point in time is reached]:date/time (YYYY-MM-DDTHH\:MM):_dates -F -S "T"' \
+    '--fsync[fsync every written file]' \
     '(--only-write-batch)--write-batch=[write a batched update to the specified file]:file:_files' \
     '(--write-batch)--only-write-batch=[like --write-batch but w/o updating destination]:file:_files' \
     '--protocol=[force an older protocol version to be used]:number' \
diff --git a/Completion/Unix/Command/_samba b/Completion/Unix/Command/_samba
index 6c7a64e18..a36130cf9 100644
--- a/Completion/Unix/Command/_samba
+++ b/Completion/Unix/Command/_samba
@@ -5,16 +5,29 @@ local -a state line expl msgs args ign
 
 (( CURRENT == 2 )) || ign='!'
 args=(
+  '--debug-stdout[send debug output to stdout]'
   '(-d --debuglevel)'{-d+,--debuglevel=}'[set debug level]:debug level (1..10) [1]'
   '(-s --configfile)'{-s+,--configfile=}'[specify alternate smb.conf file]:config file:_files'
   '(-l --log-basename)'{-l+,--log-basename=}'[specify base name for log files]:base name:_files'
   '*--option=[set smb.conf option from command line]:option=value'
+  '--leak-report[enable talloc leak reporting on exit]'
+  '--leak-report-full[enable full talloc leak reporting on exit]'
   "${ign}(1 2 3 -)"{-\?,--help}'[display usage information]'
   "${ign}(1 2 3 -)--usage[display brief usage information]"
   "${ign}(1 2 3 - *)"{-V,--version}'[display version information]'
 )
 
 case $service in
+  smbclient|nmblookup)
+    args+=(
+      '(2 -R --name-resolve)'{-R+,--name-resolve=}'[specify name resolution order]:name resolution order:_values -s " " "name resolution order" lmhosts host wins bcast'
+      '(-m --max-protocol)'{-m+,--max-protocol=}'[set the max protocol level]:level'
+      '(2 -O --socket-options)'{-O+,--socket-options=}'[specify socket options]:socket options'
+      '(2)--netbios-scope=[specify NetBIOS scope]:scope'
+      '(2 -W --workgroup)'{-W+,--workgroup=}'[specify workgroup name]:workgroup name'
+      '--realm=[set the realm name]:realm'
+    )
+  ;|
   smbcontrol)
     _arguments -C -S $args \
       '(-t --timeout)'{-t+,--timeout=}'[set timeout]:timeout (seconds)' \
@@ -42,12 +55,10 @@ case $service in
   smbclient)
     args+=(
       '(-N -A)2: :_guard "^-*" password'
-      '(2 -R --name-resolve)'{-R+,--name-resolve=}'[specify name resolution order]:name resolution order:_values -s " " "name resolution order" lmhosts host wins bcast'
       '(2 -M --message -L --list -D --directory -T --tar)'{-M+,--message=}'[send message]:host:_hosts'
       '(2 -I --ip-address)'{-I+,--ip-address=}'[specify IP address of server]:IP address'
       '(2 -E --stderr)'{-E,--stderr}'[output messages to stderr]'
       '(2 -M --message -D --directory -T --tar)'{-L+,--list=}'[list services on server]:host:_hosts'
-      '(-m --max-protocol)'{-m+,--max-protocol=}'[set the max protocol level]:level'
       '(2 -T --tar -M --message -L --list)'{-T+,--tar=}'[specify tar options]:tar options'
       '(2 -D --directory -M --message -L --list)'{-D+,--directory=}'[specify initial directory]:initial directory'
       '(2 -c --command)'{-c,--command=}'[specify commands]:command string'
@@ -58,19 +69,18 @@ case $service in
       '(-q --quiet)'{-q,--quiet}'[suppress help message]'
       '(-B --browse)'{-B,--browse}'[browse SMB servers using DNS]'
       '(2 -d --debuglevel)'{-d+,--debuglevel=}'[specify debug level]:debug level:(0 1 2 3 4 5 6 7 8 9 10)'
-      '(2 -O --socket-options)'{-O+,--socket-options=}'[specify socket options]:socket options'
       '(2 -n --netbiosname)'{-n+,--netbiosname=}'[specify local NetBIOS name]:local machine name'
-      '(2 -W --workgroup)'{-W+,--workgroup=}'[specify workgroup]:workgroup'
-      '(2 -i --scope)'{-i+,--scope=}'[specify NetBIOS scope]:scope'
       '(2 -U --user)'{-U+,--user=}'[specify username]:username:_users'
       '(2 -N --no-pass)'{-N,--no-pass}'[suppress password prompt]'
-      '(-k --kerberos)'{-k,--kerberos}'[use kerberos (active directory) authentication]'
-      '(2 -A --authentication-file)'{-A+,--authentication-file=}'[specify file containing username/password]:file:_files'
-      '(-S --signing)'{-S+,--signing=}'[set the client signing state]:state:(on off required)'
-      '(-P --machine-pass)'{-P,--machine-pass}'[use stored machine account password]'
-      '(-e --encrypt)'{-e,--encrypt}'[encrypt SMB transport]'
-      '(-C --use-ccache)'{-C,--use-ccache}'[use the winbind ccache for authentication]'
       '--pw-nt-hash[the supplied password is the NT hash]'
+      '(2 -A --authentication-file)'{-A+,--authentication-file=}'[specify file containing username/password]:file:_files'
+      '(-P --machine-pass)'{-P,--machine-pass}'[use stored machine account password]'
+      '--simple-bind-dn=[specify DN to use for a simple bind]:DN'
+      '--use-kerberos=[use Kerberos authentication]:state:(desired required off)'
+      '--use-krb5-ccache=[specify credentials cache location for Kerberos]:file:_files'
+      '--use-winbind-ccache[use the winbind ccache for authentication]'
+      '--client-protection=[configure protection used for client connections]:protection:(sign encrypt off)'
+      '!(--use-kerberos)'{-k,--kerberos}
     )
     (( CURRENT == 2 )) && args+=( '1:service name:_hosts -P // -S /' )
     _arguments -s -S $args
@@ -81,16 +91,13 @@ case $service in
       '(-f --flags)'{-f,--flags}'[list NMB flags returned]' \
       '(-U --unicast)'{-U+,--unicast=}'[specify unicast address]:unicast address' \
       '(-M --master-browser)'{-M,--master-browser}'[search for a master browser]' \
-      '(-R --recursion)'{-R,--recursion}'[set recursion desired in packet]' \
+      '--recursion[set recursion desired in packet]' \
       '(-S --status)'{-S,--status}'[lookup node status as well]' \
       '(-T --translate)'{-T,--translate}'[perform reverse DNS on IP addresses]' \
       '(-r --root-port)'{-r,--root-port}'[use root port 137]' \
       '(-A --lookup-by-ip)'{-A,--lookup-by-ip}'[query node status on IP address]' \
       '(-d --debuglevel)'{-d+,--debuglevel=}'[specify debug level]:debug level:(0 1 2 3 4 5 6 7 8 9 10)' \
-      '(-O --socket-options)'{-O+,--socket-options=}'[specify socket options to use]:socket option' \
       '(-n --netbiosname)'{-n+,--netbiosname=}'[specify primary netbios name]:netbios name' \
-      '(-W --workgroup)'{-W+,--workgroup=}'[specify workgroup name]:workgroup name' \
-      '(-i --scope)'{-i+,--scope=}'[specify NetBIOS scope]:scope' \
       '(h)*:NetBIOS name:_hosts'
   ;;
   smbstatus)
diff --git a/Completion/Unix/Command/_sqlite b/Completion/Unix/Command/_sqlite
index 6425732f1..6f0b1de94 100644
--- a/Completion/Unix/Command/_sqlite
+++ b/Completion/Unix/Command/_sqlite
@@ -12,7 +12,7 @@ dashes=( '' )
 
 options=(
   '(-init --init)'$^dashes'-init[startup file]:file containing SQLite commands:_files'
-  $^dashes'-echo[echo commands]'
+  $^dashes'-echo[print inputs before execution]'
 )
 
 exclusive=( {,-}-{no,}header )
@@ -72,12 +72,14 @@ if [[ -n $words[(r)-A*] ]]; then
     '(1 -a --append -f --file)'{-f+,--file=}'[specify archive file]:archive file:_files'
     '(1 -a --append -f --file)'{-a,--append=}'[operate on specified file opened using the apndvfs VFS]:archive file:_files'
     '(-C --directory)'{-C+,--directory=}'[change to specified directory to read/extract files]:directory:_directories'
+    '(-g --glob)'{-g,--glob}'[use glob matching for names in archive]'
     '(-n --dryrun)'{-n,--dryrun}'[show the SQL that would have occurred]'
     '*:file:_files'
     + '(commands)' \
     '(-c --create)'{-c,--create}'[create a new archive]'
     '(-u --update)'{-u,--update}'[update or add files to an existing archive]'
     '(-i --insert)'{-i,--insert}'[like -u but always add even if mtime unchanged]'
+    '(-r --remove)'{-r,--remove}'[remove files from archive]'
     '(-t --list)'{-t,--list}'[list contents of archive]'
     '(-x --extract)'{-x,--extract}'[extract files from archive]'
   )
diff --git a/Completion/Unix/Command/_strip b/Completion/Unix/Command/_strip
index 3e1a6b698..cc67ae49a 100644
--- a/Completion/Unix/Command/_strip
+++ b/Completion/Unix/Command/_strip
@@ -1,55 +1,68 @@
 #compdef strip
 
-local curcontext=$curcontext state line ret=1
+local curcontext=$curcontext state line variant ret=1
 declare -A opt_args
 declare -a args
 
-if _pick_variant gnu=GNU solaris --version; then
-  if [[ -prefix @* ]]; then
-    compset -P '@'
+if _pick_variant -r variant gnu=GNU elftoolchain=elftoolchain $OSTYPE --version; then
+  case $variant in
+    gnu|elftoolchain)
+      args=(
+        '(-g -S -d --strip-debug)'{-g,-S,-d,--strip-debug}'[remove debugging symbols]'
+        '(-I --input-target)'{-I+,--input-target=}'[object code format of input]:bfd name:->bfdnames'
+        '*'{-K+,--keep-symbol=}'[keep given symbol]:symbol name'
+        '*'{-N+,--strip-symbol=}'[strip given symbol]:symbol name'
+        '(-O --output-target)'{-O+,--output-target=}'[object code format of output]:bfd name:->bfdnames'
+        '(-p --preserve-dates)'{-p,--preserve-dates}'[preserve access and modification dates]'
+        '*'{-R+,--remove-section=}'[remove given sections]:section name'
+        '(-s --strip-all)'{-s,--strip-all}'[remove all symbols]'
+        '(-w --wildcard)'{-w,--wildcard}'[permit wildcards in symbol names]'
+        '(-X --discard-locals)'{-X,--discard-locals}'[remove compiler-generated local symbols]'
+        '(-x --discard-all)'{-x,--discard-all}'[remove non-global symbols]'
+        '--only-keep-debug[remove everything except debugging information]'
+        '--strip-unneeded[remove symbols not needed for relocation processing]'
+        '(- 1 *)'{-V,--version}'[display version information and exit]'
+      )
+    ;|
+    gnu)
+      if [[ -prefix @* ]]; then
+        compset -P '@'
 
-    local expl
+        local expl
 
-    _description files expl 'command-line-options file'
-    _files "$expl[@]"
-    return
-  fi
-  args=(
-    '(-F --target)'{-F+,--target=}'[object code format to use]:bfd name:->bfdnames'
-    '(-)--help[display usage information]'
-    '(-)--info[display list of architectures and object formats]'
-    '(-I --input-target)'{-I+,--input-target=}'[object code format of input]:bfd name:->bfdnames'
-    '(-O --output-target)'{-O+,--output-target=}'[object code format of output]:bfd name:->bfdnames'
-    '(-D --enable-deterministic-archives -U --disable-deterministic-archives)'{-U,--disable-deterministic-archives}'[disable -D behavior]'
-    '(-D --enable-deterministic-archives -U --disable-deterministic-archives)'{-D,--enable-deterministic-archives}'[produce deterministic output when stripping archives (zero file metadata)]'
-    '*'{-R+,--remove-section=}'[remove given sections]:section name'
-    '--remove-relocations=[remove relocations from specified section]:section'
-    '(-s --strip-all)'{-s,--strip-all}'[remove all symbols]'
-    '(-g -S -d --strip-debug)'{-g,-S,-d,--strip-debug}'[remove debugging symbols]'
-    '--strip-dwo[remove all DWARF .dwo sections]'
-    '--strip-unneeded[remove symbols not needed for relocation processing]'
-    '!(--no-merge-notes)'{-M,--merge-notes}
-    "--no-merge-notes[don't attempt to remove redundant notes]"
-    '*'{-K+,--keep-symbol=}'[keep given symbol]:symbol name'
-    '*'{-N+,--strip-symbol=}'[strip given symbol]:symbol name'
-    "*--keep-section=[don't strip given section]:section"
-    '(*)-o+[output file]:output file:_files'
-    '(-p --preserve-dates)'{-p,--preserve-dates}'[preserve access and modification dates]'
-    '(-w --wildcard)'{-w,--wildcard}'[permit wildcards in symbol names]'
-    '(-x --discard-all)'{-x,--discard-all}'[remove non-global symbols]'
-    '(-X --discard-locals)'{-X,--discard-locals}'[remove compiler-generated local symbols]'
-    '--keep-file-symbols[retain symbols specifying source file names]'
-    '--only-keep-debug[remove everything except debugging information]'
-    '(-)'{-V,--version}'[display version information and exit]'
-    '(-v --verbose)'{-v,--verbose}'[list all object files modified or members of archives]')
-else
-  case $OSTYPE in
+        _description files expl 'command-line-options file'
+        _files "$expl[@]"
+        return
+      fi
+      args+=(
+        '(-F --target)'{-F+,--target=}'[object code format to use]:bfd name:->bfdnames'
+        '(-)--help[display usage information]'
+        '(-)--info[display list of architectures and object formats]'
+        '(-D --enable-deterministic-archives -U --disable-deterministic-archives)'{-U,--disable-deterministic-archives}'[disable -D behavior]'
+        '(-D --enable-deterministic-archives -U --disable-deterministic-archives)'{-D,--enable-deterministic-archives}'[produce deterministic output when stripping archives (zero file metadata)]'
+        '--remove-relocations=[remove relocations from specified section]:section'
+        '--strip-dwo[remove all DWARF .dwo sections]'
+        '!(--no-merge-notes)'{-M,--merge-notes}
+        "--no-merge-notes[don't attempt to remove redundant notes]"
+        "*--keep-section=[don't strip given section]:section"
+        '(*)-o+[output file]:output file:_files'
+        '--keep-section-symbols[retain section symbols]'
+        '--keep-file-symbols[retain symbols specifying source file names]'
+        '(-v --verbose)'{-v,--verbose}'[list all object files modified or members of archives]')
+    ;;
+    elftoolchain)
+      args+=(
+        '(- 1 *)'{-h,--help}'[display usage information]'
+        '(*)'{-o+,--output-file=}'[specify output file]:output file:_files'
+      )
+    ;;
     solaris*)
       args=(
 	'-l[strip line information only]'
 	'-V[display version information on stderr and exit]'
-	'-x[do not strip the symbol table]')
-      ;;
+	'-x[do not strip the symbol table]'
+      )
+    ;;
     darwin*)
       local -a arch
       arch=( ${(z)${${"$(_call_program architectures
@@ -73,12 +86,13 @@ else
 	'-no_uuid[remove only LC_UUID load command]'
 	'-no_split_info[remove LC_SEGMENT_SPLIT_INFO load command]'
 	'-no_code_signature_warning[not warn when code signature would be invalid in the output]'
-	'-arch[specify the architecture]:architecture:( $arch )' )
-      ;;
+	'-arch[specify the architecture]:architecture:( $arch )'
+      )
+    ;;
   esac
 fi
 
-_arguments \
+_arguments -C \
   $args \
   '1:executable:_files -g "*(-*)"' \
   '*::executable:_files -g "*(-*)"' && ret=0
diff --git a/Completion/Unix/Command/_tiff b/Completion/Unix/Command/_tiff
index ef12777de..1aeff3ff7 100644
--- a/Completion/Unix/Command/_tiff
+++ b/Completion/Unix/Command/_tiff
@@ -159,6 +159,7 @@ tiffinfo)
     '-f+[force fill order]:fill order:(lsb2msb msb2lsb)' \
     '-w[display raw data in words]' \
     '-z[enable strip chopping]' \
+    '-M+[set the memory allocation limit]:limit (MiB), 0 for unlimited' \
     '*:input TIFF file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffmedian)
@@ -172,6 +173,7 @@ tiffmedian)
   ;;
 tiffsplit)
   _arguments \
+    '-M+[set the memory allocation limit]:limit (MiB), 0 for unlimited' \
     ':input file:_files -g "*.(#i)tif(|f)(-.)"' \
     ':output file prefix' && ret=0
   ;;
diff --git a/Completion/Unix/Command/_truss b/Completion/Unix/Command/_truss
index b798f03cb..b69e174e6 100644
--- a/Completion/Unix/Command/_truss
+++ b/Completion/Unix/Command/_truss
@@ -16,7 +16,11 @@ args=(
 
 case $OSTYPE in
   solaris2.<11->)
-    args+=( '(-c)-A[include absolute timestamps in output]' )
+    args+=(
+      '(-c)-A[include absolute timestamps in output]'
+      '-I[interpret system calls to well-known rather than underlying names]'
+      '-N[report only system calls that returned an error]'
+    )
   ;|
   aix*|solaris*)
     args+=(
diff --git a/Completion/Unix/Command/_user_admin b/Completion/Unix/Command/_user_admin
index db1c977ad..d5a53af7c 100644
--- a/Completion/Unix/Command/_user_admin
+++ b/Completion/Unix/Command/_user_admin
@@ -12,7 +12,7 @@ case ${service%???}:${(M)service%???}:$OSTYPE in
       shells=( ${(M)commands:#*/(|[abckz]|tc|ba)sh} )
     fi
     args+=(
-      '(-D -c --commend)'{-c+,--comment=}'[comment]:comment'
+      '(-D -c --comment)'{-c+,--comment=}'[comment]:comment'
       '(-D -d --home -b --base-dir)'{-d+,--home=}"[specify home directory]:home directory:_directories -W /"
       '(-D -e --expiredate)'{-e+,--expiredate}'[specify expiration date]:expiration date (YYYY-MM-DD)'
       '(-D -f --inactive)'{-f+,--inactive=}'[specify inactive days]:inactive days'
@@ -41,6 +41,8 @@ case ${service%???}:${(M)service%???}:$OSTYPE in
       SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK
     )
     args+=(
+      '--btrfs-subvolume-home[use BTRFS subvolume for home directory]'
+      '(-F --add-subids-for-system)'{-F,--add-subids-for-system}'[add entries to sub[ud]id even when adding a system user]'
       '(-l --no-log-init)'{-l,--no-log-init}"[don't add user to lastlog and faillog databases]"
       '(-m --create-home -M --no-create-home)'{-M,--no-create-home}"[don't create user's home directory, regardless of /etc/login.defs]"
       '(-N --no-user-group -U --user-group)'{-N,--no-user-group}"[don't create a group with the same name as the user]"
@@ -103,6 +105,7 @@ case ${service%???}:${(M)service%???}:$OSTYPE in
   user:mod:linux*)
     args+=(
       '(-a --append)'{-a,--append}'[add user to supplementary groups without removing from other groups]'
+      '(-r --remove)'{-r,--remove}'[remove user from supplementary groups without removing from other groups]'
       \*{-v,--add-subuids}'[add a range of subordinate uids]:uids (first-last)'
       \*{-V,--del-subuids}'[remove a range of subordinate uids]:uids (first-last)'
       \*{-w,--add-subgids}'[add a range of subordinate gids]:gids (first-last)'
@@ -118,9 +121,16 @@ case ${service%???}:${(M)service%???}:$OSTYPE in
   ;|
   user:*:linux*)
     args+=(
+      '(-b --badname)'{-b,--badname}"[don't check for bad names]"
       '(-U --unlock --lock -L -p)'{-L,--lock}"[lock user's password]"
       '(-U --unlock --lock -L -p)'{-U,--unlock}"[unlock user's password]"
-      '(-Z --selinux-user)'{-Z,--selinux-user}"[specify SELinux user for the user's login]:user"
+      '(-Z --selinux-user)'{-Z,--selinux-user}"[specify SELinux user for the user's login]:user:_selinux_users"
+      "--selinux-range[specify SELinux MLS range for the user's login]:range"
+    )
+  ;|
+  group:*:linux*)
+    args+=(
+      '(-U --users)'{-U+,--users=}'[specify users to add as members of the group]:user:_sequence _users'
     )
   ;|
   group:*)
@@ -164,6 +174,9 @@ case ${service%???}:${(M)service%???}:$OSTYPE in
       ':group:_groups'
     )
   ;|
+  group:mod:linux*)
+    args+=( '(-a --append)'{-a,--append}'[append the users mentioned by -U without removing existing members]' )
+  ;|
   ^*:linux*)
     args=( ${(R)args:#(|\*)(|\(*\))--*} )    # remove long options
   ;|
diff --git a/Completion/Unix/Command/_vmstat b/Completion/Unix/Command/_vmstat
index e05bc88bc..6db776e62 100644
--- a/Completion/Unix/Command/_vmstat
+++ b/Completion/Unix/Command/_vmstat
@@ -8,7 +8,7 @@ case $OSTYPE in
       '(-t --timestamp)'{-t,--timestamp}'[show timestamp]'
       '(-n --one-header)'{-n,--one-header}'[do not redisplay header]'
       '(-S --unit)'{-S+,--unit=}'[specify unit for displayed sizes]:unit prefix [K]:((k\:1000 K\:1024 m\:1000000 M\:1048576))'
-      '(-C --full-cache)'{-C,--full-cache}'[add further cache lines to main cache]'
+      '(-y --no-first)'{-y,--no-first}'[skip first line of output]'
       '1: :_guard "[0-9]#" "interval (seconds)"' '2:count'
       + '(action)' \
       '(- :)'{-h,--help}'[display help information]'
diff --git a/Completion/Unix/Command/_vorbis b/Completion/Unix/Command/_vorbis
index 6c94469f9..fca218a51 100644
--- a/Completion/Unix/Command/_vorbis
+++ b/Completion/Unix/Command/_vorbis
@@ -32,7 +32,6 @@ case $service in
       '(-q --quality)'{-q+,--quality=}'[set encoding quality]:quality:(0 1 2 3 4 5 6 7 8 9 10)' \
       '--resample=[resample input to the given sample rate before encoding]:sample rate (Hz)' \
       '--downmix[down mix input from stereo to mono]' \
-      '--scale=[set input scaling factor]:scaling factor' \
       '(-s --serial)'{-s+,--serial=}'[force a specific serial number in the output stream]:serial number' \
       "--discard-comments[don't copy comments from FLAC file to output Ogg Vorbis file]" \
       '--ignorelength[ignore the datalength in Wave headers]' \
@@ -74,10 +73,6 @@ case $service in
       '(-q --quiet -v --verbose)'{--quiet,-q}'[quiet mode]' \
       '(-q --quiet)*'{-v,--verbose}'[increase verbosity]' \
       '(- *)'{-V,--version}'[display version information]' \
-      \*{-c-,--config=-}'[specify config options]: :_values option
-        "default_device\:device"
-        "shuffle\:value\:(0 1)"
-        "repeat\:value\:(0 1)"' \
       '*:sound file or directory:->urls-or-files' && ret=0
   ;;
   ogginfo)
diff --git a/Completion/Unix/Command/_w b/Completion/Unix/Command/_w
index 69751c5e5..e82c84f57 100644
--- a/Completion/Unix/Command/_w
+++ b/Completion/Unix/Command/_w
@@ -1,6 +1,6 @@
 #compdef w
 
-local args
+local -a args
 
 case $OSTYPE in
   linux*)
@@ -11,7 +11,7 @@ case $OSTYPE in
       '(H -o --old-style -s --short)'{-o,--old-style}'[old style output format]'
       '(H -s --short -o --old-style)'{-s,--short}'[use short output format]'
       '(H -u --no-current)'{-u,--no-current}'[ignore the username while figuring out the current process and cpu times]'
-      '(H -n --no-truncat)'{-n,--no-truncat}'[non-truncated listing (large)]'
+      '(H -p --pids)'{-p,--pids}'[show process IDs]'
       + H
       '(-)--help[display help information]'
       '(-)'{-V,--version}'[display version information]'
diff --git a/Completion/Unix/Command/_wget b/Completion/Unix/Command/_wget
index 50fd7791a..acc8d5c6e 100644
--- a/Completion/Unix/Command/_wget
+++ b/Completion/Unix/Command/_wget
@@ -23,6 +23,7 @@ _arguments -C -s \
   '(--config)--no-config' '--rejected-log=:file:_files' \
   '(--tries -t)'{--tries=,-t+}'[set number of retries]:number of retries' \
   '--retry-connrefused[retry even if connection is refused]' \
+  '--retry-on-host-error[consider host errors as non-fatal, transient errors]' \
   '--retry-on-http-error=[specify list of HTTP errors to retry]:http error' \
   '(--output-document -O)'{--output-document=,-O+}'[specify file to write documents to]:output file:_files' \
   '(--continue -c)'{--continue,-c}'[continue getting an existing file]'  \
@@ -98,7 +99,7 @@ _arguments -C -s \
   '--content-disposition[honor the Content-Disposition header when choosing local file names]'  \
   '--content-on-error[output received content on server errors]' \
   "--auth-no-challenge[send basic HTTP authentication without first waiting for server's challenge]" \
-  '--secure-protocol=[choose secure protocol]:protocol:(SSLv2 SSLv3 TLSv1 TLSv1_1 TLSv1_2 PFS)' \
+  '--secure-protocol=[choose secure protocol]:protocol:(SSLv2 SSLv3 TLSv1 TLSv1_1 TLSv1_2 TLSv1_3 PFS)' \
   --https-only \
   "--no-check-certificate[don't check the server certificate]" \
   '--certificate=[specify client certificate]:client certificate file:_files' \
diff --git a/Completion/Unix/Command/_xmlsoft b/Completion/Unix/Command/_xmlsoft
index 08b123e54..b8cf92700 100644
--- a/Completion/Unix/Command/_xmlsoft
+++ b/Completion/Unix/Command/_xmlsoft
@@ -40,6 +40,7 @@ case $service in
       '--maxdepth[increase the maximum depth]:depth' \
       '--maxvars[increase the maximum variables]:variables' \
       '--maxparserdepth[increase the maximum parser depth]:depth' \
+      '--huge[relax hardcoded limits of the parser]' \
       '--seed-rand[initialise random number generator]:seed' \
       '--html[input document is an HTML file]' \
       '--encoding[the input document character encoding]:encoding:(${encoding[@]})' \
diff --git a/Completion/Unix/Command/_xxd b/Completion/Unix/Command/_xxd
index 31d26ab64..e9015a081 100644
--- a/Completion/Unix/Command/_xxd
+++ b/Completion/Unix/Command/_xxd
@@ -24,7 +24,7 @@ arguments=(
   # output options
   '(-b -bits            -i -include -p -postscript -plain -ps -r -revert -u -uppercase)'{-b,-bits}'[output in binary digits, rather than hex]'
   '(         -E -EBCDIC -i -include -p -postscript -plain -ps -r -revert              )'{-E,-EBCDIC}'[print human-readable part in EBCDIC rather than ASCII]'
-  '(-i -include -p -postscript -plain -ps -r -revert)'{-e,-endian}'[little-endian dump]'
+  '(-i -include -p -postscript -plain -ps -r -revert)-e[little-endian dump]'
   '(-b -bits -E -EBCDIC -i -include -p -postscript -plain -ps -r -revert              )'{-i,-include}'[output in C include file style]'
   '(-b -bits -E -EBCDIC -i -include -p -postscript -plain -ps -C -capitalize          )'{-p,-postscript,-plain,-ps}'[read or write a plain hexdump (no line numbers or ASCII rendering)]'
 
@@ -35,12 +35,14 @@ arguments=(
   '(- :)'{-v,-version}'[show program version]'
   '*'{-a,-autoskip}"[a single '*' replaces runs of NUL (toggleable)]"
   '(-C -capitalize)'{-C,-capitalize}'[capitalize variable names in C include file style]'
-  {-c+,-cols}'[specify number of octets per line]: :_guard "[0-9a-fA-Fx]#" "number of octets per line"'
-  {-g+,-groupsize}'[specify the number of octets per group]: :_guard "[0-9]#" "number of octets per group"'
-  {-l+,-len}'[specify number of octets to output]: :_guard "[0-9]#" "number of octets to output"'
-  {-o+,-offset}'[add specified offset to displayed file position]:offset'
+  '(-c -cols)'{-c+,-cols}'[specify number of octets per line]: :_guard "(0x|)[0-9a-fA-Fx]#" "number of octets per line"'
+  '(-g -groupsize)'{-g+,-groupsize}'[specify the number of octets per group]: :_guard "(0x|)[0-9a-fA-F]#" "number of octets per group"'
+  '(-l -len)'{-l+,-len}'[specify number of octets to output]: :_guard "(0x|)[0-9a-fA-F]#" "number of octets to output"'
+  '(-n -name)'{-n+,-name}'[override the variable name output when -i is used]:variable name'
+  '(-o -offset)'{-o+,-offset}'[add specified offset to displayed file position]:offset'
   '-d[show offset in decimal instead of hex]'
-  {-s,-skip,-seek}'[specify file offset to dump from]: :_guard "[0-9]#" "file offset to dump from (absolute or relative)"'
+  '-R+[colorize the output]:when:(always auto never)'
+  '(-s -skip -seek)'{-s+,-skip,-seek}'[specify file offset to dump from]: :_guard "(0x|)[0-9a-fA-F]#" "file offset to dump from (absolute or relative)"'
 
   ': :_files'
 )
diff --git a/Completion/X/Command/_evince b/Completion/X/Command/_evince
index 21b493360..49f11f341 100644
--- a/Completion/X/Command/_evince
+++ b/Completion/X/Command/_evince
@@ -15,6 +15,7 @@ _arguments -s -S \
   '--g-fatal-warnings[make all warnings fatal]' \
   '--gtk-debug=[specify GTK+ debugging flags to set]:flag' \
   '--gtk-no-debug=[specify GTK+ debugging flags to unset]:flag' \
+  '(-o --new-window)'{-o,--new-window}'[open a new window]' \
   '(-p --page-label -i --page-index -n --named-dest)'{-p,--page-label=}'[specify page label of the document to display]' \
   '(-p --page-label -i --page-index -n --named-dest)'{-i,--page-index=}'[specify page number of the document to display]' \
   '(-p --page-label -i --page-index -n --named-dest)'{-n,--named-dest=}'[specify named destination to display]' \
diff --git a/Completion/X/Command/_qiv b/Completion/X/Command/_qiv
index 35ceec09a..5d0aa8faf 100644
--- a/Completion/X/Command/_qiv
+++ b/Completion/X/Command/_qiv
@@ -10,6 +10,7 @@ _arguments -s \
   '(-C --cycle)'{-C,--cycle}"[don't cycle after last image]" \
   '(-w --fixed_width -W --fixed_zoom)'{-w,--fixed_width}'[use window with specified width]:width' \
   '(-w --fixed_width -W --fixed_zoom)'{-W,--fixed_zoom}'[use window with specified zoom factor]:zoom (percentage)' \
+  '--highDPIfactor[specify resize factor to compensate for high (or also low) DPI screens]:factor' \
   '(-x -y -z --root --root_t --root_s -f --file *)'{-x,--root}'[use image as the current desktop background, centered]:image file:_files' \
   '(-x -y -z --root --root_t --root_s -f --file *)'{-y,--root_t}'[use image on the current desktop background, tiled]:image file:_files' \
   '(-x -y -z --root --root_t --root_s -f --file *)'{-z,--root_s}'[use image as the current desktop background, stretched]:image file:_files' \
@@ -22,6 +23,9 @@ _arguments -s \
   '(-n --no_filter)'{-n,--no_filter}'[disable filtering of images by extension]' \
   '(-i --no_statusbar -I --statusbar)'{-i,--no_statusbar}'[disable statusbar]' \
   '(-i --no_statusbar -I --statusbar)'{-I,--statusbar}'[enable statusbar]' \
+  '(-J --showJPEGcomments)'{-J,--showJPEGcomments}'[enable display of JPEG comments]' \
+  '(-E --showArtistName)'{-E,--showArtistName}'[enable display of artist (author) name]' \
+  "--artist_ignore[don't show specified artist name]:artist" \
   '(-p --transparency)'{-p,--transparency}'[enable transparency]' \
   '(-a --do_grab)'{-a,--do_grab}'[grab the pointer in windowed mode]' \
   '(-G --disable_grab)'{-G,--disable_grab}'[disable pointer grabbing in fullscreen mode]' \
@@ -47,4 +51,4 @@ _arguments -s \
   '(-Y --source_profile)'{-Y,--source_profile}'[specify colour profile file as source profile]:colour profile file:_files' \
   '(-Z --display_profile)'{-Z,--display_profile}'[specify colour profile file as display profile]:colour profile file:_files' \
   '--vikeys[enable movement with h/j/k/l]' \
-  '*:image file:_files -g "*.(#i)(bmp|eim|gif|ico|jp([eg]|eg)|pcx|png|p[pngb]m|pjpeg|svg|tif(|f)|wmf|x[pb]m)(-.)"'
+  '*:image file:_files -g "*.(#i)(bmp|eim|gif|hei[cf]|ico|jp([eg]|eg)|pcx|png|p[pngb]m|pjpeg|svg|tif(|f)|webp|wmf|x[pb]m)(-.)"'
diff --git a/Completion/X/Command/_xdvi b/Completion/X/Command/_xdvi
index c33e67bcc..ed5982bcc 100644
--- a/Completion/X/Command/_xdvi
+++ b/Completion/X/Command/_xdvi
@@ -2,15 +2,22 @@
 
 _xt_arguments \
   -+{allowshell,copy,expert,hush{,chars,checksums,specials},keep,l,no{ghostscript,grey,gssafer,makepk,postscript,scan},safer,thorough,underlink,version} \
-  +{altfont,base,browser,cr,debug,density,gamma,gspalette,hl,icongeometry,interpreter,margin,mfmode,offsets,p,paper,shrink,S,sidemargin,topmargin,xoffset,yoffset,grid{1,2,3},mgs{,1,2,3,4,5}} \
+  +{altfont,background,bg,browser,cr,debug,density,dvispath,editor,gamma,gspalette,hl,icongeometry,interpreter,margin,mfmode,offsets,p,paper,shrink,S,sidemargin,topmargin,xoffset,yoffset,grid{1,2,3},mgs{,1,2,3,4,5}} \
   '-altfont:default font' \
-  '-base:base URL' \
+  -{bg,background}':color:_x_color' \
   '-browser:WWW browser:_command_names -e' \
   '-cr:cursor color:_x_color' \
-  '-debug:debugging bitmask:((1\:bitmaps 2\:dvi\ translation 4\:pk\ reading 8\:batch\ operation 16\:events 32\:file\ opening 64\:PostScript\ communication 128\:Kpathsea\ statistics 256\:Kpathsea\ hash\ table\ lookups 512\:Kpathsea\ path\ definitions 1024\:Kpathsea\ path\ expansion 2048\:Kpathsea\ searches))' \
+  '-debug:debugging bitmask:((1\:bitmaps 2\:dvi\ translation 4\:pk\ reading 8\:batch\ operation 16\:events 32\:file\ opening 64\:PostScript\ communication 128\:Kpathsea\ statistics 256\:Kpathsea\ hash\ table\ lookups 512\:Kpathsea\ path\ definitions 1024\:Kpathsea\ path\ expansion 2048\:Kpathsea\ searches ))' \
   '-density:font shrink density' \
+  '-dvispath:dvips program:_command_names -e' \
+  '-editor:text editor:_cmdstring' \
+  '-expertmode:display bitmask:((1\:statusline 2\:scrollbars 4\:pagelist 8\:toolbar 16\:menubar))' \
+  -{fg,foreground}':color:_x_color' \
+  '-findstring:string' \
+  '-font:font:_x_font' \
+  '-fullscreen' \
   '-gamma:anti-aliasing factor [1.0]' \
-  -grid{1,2,3}':grid color:_x_color' \
+  '-gsalpha' \
   '-gspalette:Ghostscript palette:(Color Greyscale Monochrome)' \
   '-hl:page highlight color:_x_color' \
   '-icongeometry:icon geometry:_x_geometry' \
@@ -21,6 +28,9 @@ _xt_arguments \
   '-offsets:offset size' \
   '-p:font size (pixel per inch)' \
   '-paper:paper size (<width>x<height> or ...):(us usr legal foolscap a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 c1 c2 c3 c4 c5 c6 c7 a1r a2r a3r a4r a5r a6r a7r)' \
+  '-ps2pdfpath:ps2pdf program:_command_names -e' \
+  '-rulecolor:color' \
+  '-rv' \
   '-shrink:shrink factor' \
   '-S:font shrink density' \
   '-sidemargin:side margin' \


^ permalink raw reply	[flat|nested] 8+ messages in thread
* PATCH: completion options update
@ 2021-08-27 12:43 Oliver Kiddle
  0 siblings, 0 replies; 8+ messages in thread
From: Oliver Kiddle @ 2021-08-27 12:43 UTC (permalink / raw)
  To: Zsh workers

This patch is an update based on help output diffs. There's more than
usual because I've not updated these for a little while. Lots of files
changed but I've tried to keep this to files that only need relatively
few updates. Sorry if this isn't the easest form for reviews.

Lastest checked versions for affected commands are:

  abcde 2.9.3
  ansible 2.11.1
  attr 2.4.48
  binutils 2.36.1
  btrfs 5.13.1
  cpupower 5.14
  cryptsetup 2.3.6
  dict 1.13.0
  dig 9.16.19
  dkms 2.6.1
  elfutils 0.185
  entr 4.9
  ethtool 5.13
  gem 3.1.6
  getfacl 2.3.1
  gnutls 3.7.2
  gprof 2.36.1
  java - incomplete from version 8
  less 590
  mtr 0.94
  networkmanager 1.30.0
  patchutils 0.4.2
  pigz 2.6
  procps 3.3.17 (pidof/pgrep/pkill)
  ri 6.3.1
  rpm 4.15.1
  ruby 2.7.3p183
  sudo 1.9.7p2
  sysstat 12.4.3
  tmux 3.2a
  util-linux 2.36.2 (findmnt/script/scriptreplay/wipefs)
  unrar 602
  valgrind 3.16.0
  vim 8.2.3081
  w3m 0.5.3
  wget 1.21.1
  wiggle 1.3
  xrandr 1.5.1
  xmlsoft 10134
  xterm 353
  xxd 2020-02-04

Oliver

diff --git Completion/Linux/Command/_btrfs Completion/Linux/Command/_btrfs
index d560928ae..bb0f724e6 100644
--- Completion/Linux/Command/_btrfs
+++ Completion/Linux/Command/_btrfs
@@ -17,11 +17,14 @@ cmds_7=( get set list )
 cmds_8=( enable disable rescan help )
 cmds_9=( assign remove create destroy show limit help )
 cmds_10=( start status cancel help )
-cmds_11=( chunk-recover fix-device-size super-recover zero-log )
+cmds_11=( chunk-recover fix-device-size super-recover zero-log create-control-device )
 
 _arguments -C -A "-*" "$args[@]" \
   '(- *)--help[print help information]' \
   '(- *)--version[print version information]' \
+  '(-v --verbose -q --quiet --help --version)'{-v,--verbose}'[verbose output of operation]' \
+  '(-v --verbose -q --quiet --help --version)'{-q,--quiet}'[suppress all messages except errors]' \
+  '(--help --version)--format=[specify output format]:format:(text json)' \
   '(--version)1: :->groups' \
   '2: :->cmds' \
   '*:: :->args' && ret=0
@@ -60,6 +63,11 @@ while (( $#state )); do
       fi
       args=( '(-)--help[print help information]' )
       case ${cont} in
+        (balance|replace):start|device:(add|delete|remove)|filesystem:resize)
+          args+=(
+            "--enqueue[wait if there's another exclusive operation running, otherwise continue]"
+          )
+        ;|
         subvolume:create)
           args+=(
             '*-i[add the newly created subvolume to a qgroup]:qgroup'
@@ -67,11 +75,10 @@ while (( $#state )); do
           )
         ;;
         subvolume:delete)
-          args+=(
+          args+=( '!-v' '!--verbose'
             '(-c --commit-after -C --commit-each)'{-c,--commit-after}'[wait for transaction commit at the end of the operation]'
             '(-c --commit-after -C --commit-each)'{-C,--commit-each}'[wait for transaction commit after deleting each subvolume]'
             '(-i --subvolid)'{-i+,--subvolid=}'[specify id of subvolume to be removed]:subvolume id'
-            '(-v --verbose)'{-v,--verbose}'[verbose output of operations]'
             '1:subvolume:_files -/'
           )
         ;;
@@ -113,7 +120,7 @@ while (( $#state )); do
         ;|
         subvolume:sync) args+=( '-s[sleep between checks]:delay (seconds) [1]' );;
         subvolume:find-new) args+=( '1:subvol:_files -/' '2:lastgen: _message "last gen"' );;
-        (device|filesystem|qgroup|subvolume):(df|du|show|usage))
+        (device|filesystem|qgroup|subvolume):(df|du|show|usage)|scrub:status)
           args+=(
             '--iec[use 1024 as a base]'
             '--si[use 1000 as a base]'
@@ -130,7 +137,7 @@ while (( $#state )); do
             '(-t --tbytes)'{-t,--tbytes}'[show sizes in TiB, or TB with --si]'
           )
         ;|
-        (filesystem|qgroup):(du|show))
+        (filesystem|qgroup|scrub):(du|show|status))
           args+=(
             '--raw[output raw numbers in bytes]'
             '--human-readable[output human friendly numbers, base 1024]'
@@ -142,8 +149,7 @@ while (( $#state )); do
         ;|
         filesystem:resize) args+=( '1:size:_guard "(|+|-)[0-9]#[GKM]"' '2:path:->mounts' );;
         filesystem:defragment)
-          args+=(
-            '-v[verbose]'
+          args+=( '!-v'
             '-r[defragment files recursively]'
             '-c+[compress files while defragmenting]::compression algorithm:(zlib lzo zstd)'
             '-r[defragment files recursively]'
@@ -193,10 +199,9 @@ while (( $#state )); do
         ;;
         device:ready) args+=( '1:device: _files -g "*(-%)"' );;
         scrub:(start|resume))
-          args+=(
+          args+=( '!-q'
             "-B[don't background and print statistics at end]"
             '-d[print separate statistics for each device]'
-            '-q[omit error message and statistics]'
             '-r[read only mode]'
             '-R[raw print mode]'
             '-c[set ioprio class]:class:(( 0\:none 1\:realtime 2\:best-effort 3\:idle))'
@@ -216,18 +221,17 @@ while (( $#state )); do
           )
         ;;
         balance:start)
-          args+=(
+          args+=( '!-v' '!--verbose'
             '(-m -s)-d+[act on data chunks]:filter:->filters'
             '(-d -s)-m+[act on metadata chunks]:filter:->filters'
             '(-d -m)-s+[act on system chunks (only under -f)]:filters:->filters'
-	    '(-v --verbose)'{-v,--verbose}'[verbose mode]'
             '-f[force a reduction of metadata integrity]'
             "--full-balance[don't print warning and don't delay start]"
             '(--background --bg)'{--background,--bg}'[run balance operation asynchronously in the background]'
             '1:path:_files -/'
           )
         ;;
-        balance:status) args+=( '(-v --verbose)'{-v,--verbose}'[verbose mode]' '1:path:_files -/' );;
+        balance:status) args+=( '!-v' '!--verbose' '1:path:_files -/' );;
         balance:(pause|cancel|resume)) args+=( '1:path:_files -/' );;
         property:set) args+=( '3:value' );&
         property:get) args+=( '2:property:(ro label compression)' );&
@@ -304,6 +308,8 @@ while (( $#state )); do
 	    '!(--dfs)--bfs'
 	    '--dfs[depth-first traversal of the trees]'
             '--hide-names[hide filenames/subvolume/xattrs and other name references]'
+            '--csum-headers[print node checksums stored in headers (metadata)]'
+            '--csum-items[print checksums stored in checksum items (data)]'
           )
         ;;
         inspect*:dump-super)
@@ -315,11 +321,10 @@ while (( $#state )); do
             '--bytenr[specify alternate superblock offset]:offset'
           )
         ;;
-        inspect*:inode*) args+=( '-v[verbose mode]' '1:inode:_files' '2:path:_files -/' );;
-        inspect*:subvol*) args+=( '-v[verbose mode]' '1:subvolid:_guard "[0-9]#" subvolume id' '2:path:_files -/' );;
+        inspect*:inode*) args+=( '!-v' '1:inode:_files' '2:path:_files -/' );;
+        inspect*:subvol*) args+=( '!-v' '1:subvolid:_guard "[0-9]#" subvolume id' '2:path:_files -/' );;
         inspect*:logical*)
-          args+=(
-            '-v[verbose mode]'
+          args+=( '!-v'
             '-P[skip the path resolving and print the inodes instead]'
             '-o[ignore offsets when matching references]'
             '-s[specify buffer size]:buffer size [4096]'
@@ -331,9 +336,8 @@ while (( $#state )); do
         inspect*:rootid) args+=( '1:path:_files -/' );;
         inspect*:tree*) args+=( '-b[print raw numbers in bytes]' );;
         rescue:(chunk|super)-recover)
-          args+=(
+          args+=( '!-v'
             '-y[assume yes to every question]'
-            '-v[verbose mode]'
             '1:device:_files'
           )
           [[ ${${(P)group}[cmd]} == chunk-recover ]] && args+=('(-)-h[display help]')
@@ -361,12 +365,11 @@ while (( $#state )); do
           )
         ;;
         restore)
-          args+=(
+          args+=( '!-v' '!--verbose'
             '(-s --snapshots)'{-s,--snapshots}'[get snapshots]'
             '(-x --xattr)'{-x,--xattr}'[restore extended attributes]'
             '(-m --metadata)'{-m,--metadata}'[restore owner, mode and times]'
             '(-S --symlink)'{-S,--symlink}'[restore symbolic links]'
-            '(-v --verbose)'{-v,--verbose}'[be verbose and output what is restored]'
             '(-i --ignore-errors)'{-i,--ignore-errors}'[ignore errors]'
             '(-o --overwrite)'{-o,--overwrite}'[overwrite directories and files]'
             '-t[specify tree location]:tree root'
@@ -383,23 +386,20 @@ while (( $#state )); do
           )
         ;;
         send|receive)
-          args+=( '(-q --quiet)'{-q,--quiet}'[suppress all messages except errors]' )
+          args+=( '!-q' '!--quiet' )
         ;|
         send)
-          args+=(
-            '*-v[verbose mode]'
+          args+=( '!-v'
             '-e[if sending multiple subvolumes at once, use the new format]'
             '-p[send incremental stream]:parent:_files -/'
             '*-c[use snapshot as clone source]:clone:_files -/'
             '-f[specify output file]:file:_files'
             '--no-data[send in NO_FILE_DATA mode]'
-            '(-v --verbose)'{-v,--verbose}'[enable verbose output]'
             '1:subvolume:_files -/'
           )
         ;;
         receive)
-          args+=(
-            '*-v[verbose mode]'
+          args+=( '!-v'
             '-f[input file]:file: _files'
             '-e[terminate after <end cmd>]'
             '(-C --chroot)'{-C,--chroot}'[confine the process to destination path using chroot(1)]'
diff --git Completion/Linux/Command/_cpupower Completion/Linux/Command/_cpupower
index ae1f1d3d1..6763bdd12 100644
--- Completion/Linux/Command/_cpupower
+++ Completion/Linux/Command/_cpupower
@@ -20,11 +20,12 @@ cmds=(
   'info:show global power parameters'
   'set:set global power parameters'
   'monitor:report frequency and idle statistics'
+  'powercap-info:show powercapping related kernel and hardware configurations'
   'help:print usage information'
 )
 case $state in
   cmds)
-    _describe command cmds && ret=0
+    _describe command cmds -M 'r:|-=* r:|=*' && ret=0
   ;;
   args)
     curcontext="${curcontext%:*}-$words[1]"
diff --git Completion/Linux/Command/_cryptsetup Completion/Linux/Command/_cryptsetup
index 45159d0be..f7149a76f 100644
--- Completion/Linux/Command/_cryptsetup
+++ Completion/Linux/Command/_cryptsetup
@@ -21,6 +21,7 @@ _arguments -s \
   '--new-keyfile-offset=[specify number of bytes to skip in newly added keyfile]:offset (bytes)' \
   '(-S --key-slot)'{-S+,--key-slot=}'[select key slot]:key slot' \
   '(-b --size)'{-b+,--size=}'[force device size]:sectors' \
+  '--device-size=[use only specified device size (ignore rest of device)]:size (bytes)' \
   '(-o --offset)'{-o+,--offset=}'[set start offset]:sectors' \
   '(-p --skip)'{-p+,--skip=}'[data to skip at beginning]:sectors' \
   '(-r --readonly)'{-r,--readonly}'[create a read-only mapping]' \
@@ -44,10 +45,12 @@ _arguments -s \
   '--veracrypt[scan also for VeraCrypt compatible device]' \
   '--veracrypt-pim=[specify personal iteration multiplier for VeraCrypt compatible device]:multiplier' \
   '--veracrypt-query-pim[query personal iteration multiplier for VeraCrypt compatible device]' \
-  '(-M --type)'{-M+,--type=}'[specify type of device metadata]:type:(luks plain loopaes tcrypt)' \
+  '(-M --type)'{-M+,--type=}'[specify type of device metadata]:type:(luks luks1 luks2 plain loopaes tcrypt bitlk)' \
   '--force-password[disable password quality check (if enabled)]' \
   '--perf-same_cpu_crypt[use dm-crypt same_cpu_crypt performance compatibility option]' \
   '--perf-submit_from_crypt_cpus[use dm-crypt submit_from_crypt_cpus performance compatibility option]' \
+  '--perf-no_read_workqueue[bypass dm-crypt workqueue and process read requests synchronously]' \
+  '--perf-no_write_workqueue[bypass dm-crypt workqueue and process write requests synchronously]' \
   '--deferred[device removal is deferred until the last user closes it]' \
   '--serialize-memory-hard-pbkdf[use global lock to serialize memory]' \
   '--pbkdf=[specify PBKDF algorithm for LUKS2]:algorithm:(argon2i argon2id pbkdf2)' \
@@ -60,14 +63,16 @@ _arguments -s \
   '(-I --integrity)'{-I+,--integrity=}'[specify data integrity algorithm (LUKS2 only)]:algorithm' \
   '--integrity-no-journal[disable journal for integrity device]' \
   "--integrity-no-wipe[don't wipe device after format]" \
+  '--integrity-legacy-padding[use inefficient legacy padding (old kernels)]' \
   "--token-only[don't ask for passphrase if activation by token fails]" \
   '--token-id=[specify token number]:number [any]' \
   '--key-description=[specify key description]:description' \
   '--sector-size=[specify encryption sector size]:size [512 bytes]' \
+  '--iv-large-sectors[use IV counted in sector size (not in 512 bytes)]' \
   '--persistent[set activation flags persistent for device]' \
   '--label=[set label for the LUKS2 device]:label' \
   '--subsystem=[set subsystem label for the LUKS2 device]:subsystem' \
-  '--unbound[create unbound (no assigned data segment) LUKS2 keyslot]' \
+  '--unbound[create or dump unbound (no assigned data segment) LUKS2 keyslot]' \
   '--json-file=[read or write token to json file]:json file:_files -g "*.json(-.)"' \
   '--luks2-metadata-size=[specify LUKS2 header metadata area size]:size (bytes)' \
   '--luks2-keyslots-size=[specify LUKS2 header keyslots area size]:size (bytes)' \
@@ -77,12 +82,13 @@ _arguments -s \
   '--encrypt[Encrypt LUKS2 device (in-place encryption)]' \
   '--decrypt[decrypt LUKS2 device (remove encryption)]' \
   '--init-only[initialize LUKS2 reencryption in metadata only]' \
+  '--resume-only[resume initialized LUKS2 reencryption only]' \
   '--reduce-device-size=[reduce data device size (move data offset)]:size (bytes)' \
   '--hotzone-size=[specify maximal reencryption hotzone size]:size (bytes)' \
   '--resilience=[specify reencryption hotzone resilience type]:resilience type:(checksum journal none)' \
   '--resilience-hash=[specify reencryption hotzone checksums hash]:string' \
   '--active-name=[override device autodetection of dm device to be reencrypted]:string' \
-  "${ign}(- : *)--version[show version information]" \
+  "${ign}(- : *)"{-V,--version}'[show version information]' \
   "${ign}(- : *)"{-\?,--help}'[display help information]' \
   "${ign}(- : *)--usage[display brief usage]" \
   ':action:->actions' \
@@ -111,6 +117,7 @@ case $state in
       'isLuks:check if device is a LUKS partition'
       'luksDump:dump header information'
       'tcryptDump:dump TCRYPT device information'
+      'bitlkDump:dump BITLK device information'
       'luksSuspend:suspend LUKS device and wipe key'
       'luksResume:resume suspended LUKS device'
       'luksHeaderBackup:store binary backup of headers'
diff --git Completion/Linux/Command/_dkms Completion/Linux/Command/_dkms
index a0a666e33..2a3c016c5 100644
--- Completion/Linux/Command/_dkms
+++ Completion/Linux/Command/_dkms
@@ -8,6 +8,7 @@ subcmds=(
   'add:add a module/version combination to the tree for builds and installs'
   'remove:remove a module from the tree'
   'build:compile a module for a kernel'
+  'unbuild:undoes the build of a module'
   "install:install a build module for it's corresponding kernel"
   'uninstall:uninstall a module for a kernel'
   'match:install every module that is installed for a template kernel for another kernel'
@@ -17,6 +18,7 @@ subcmds=(
   'mkrpm:create an RPM package for a module'
   'mkdeb:create a debian binary package for a module'
   'mkdsc:create a debian source package for a module'
+  'mkbmdeb:create a debian package containing just binary modules'
   'mkkmp:create a Kernel Module Package source RPM for a module'
   'status:display the current status of modules, versions and kernels within the tree'
   'autoinstall:try to install the latest revision of all modules that have been installed for other kernel revisions'
@@ -32,6 +34,7 @@ args=(
   '--installtree=:path:_directories'
   '--sourcetree=:path:_directories'
   '--dkmsframework=:path:_directories'
+  '--force-version-override'
   '1: : _describe -t commands command subcmds'
 )
 
@@ -44,7 +47,7 @@ else
     '(remove|build|install|uninstall|match|status|mk(^kmp))' 'k' \
     '(add|remove)' '-rpm_safe_upgrade' \
     'mk(driverdisk|kmp)' '-spec' \
-    'mk(deb|dsc|rpm)' '-legacy-postinst' \
+    'mk(deb|dsc|bmdeb|rpm)' '-legacy-postinst' \
     'mk(tarball|rpm|deb|dsc)' '-(source|binary)-only' \
     '(match|build|mkkmp)' '(k|-no-(prepare|clean)-kernel|-kernelsourcedir)' \
     '(|un)install' '-no-(depmod|initrd)' \
@@ -67,7 +70,7 @@ case $cmd in
   remove|build|install|uninstall|mk*|status)
     args+=( ': :->modules' )
   ;|
-  |remove|build|install|uninstall|match|status|mk(^kmp))
+  |remove|(un|)build|install|uninstall|match|status|mk(^kmp))
     args+=( '(--all)*-k[specify kernel version]:kernel:->kernels' )
   ;|
   |add|remove) args+=( "${ign}--rpm_safe_upgrade" ) ;|
@@ -77,7 +80,7 @@ case $cmd in
   |(mk|ld)tarball)
     args+=( "${ign}--archive=:tarball:_files -g '*.tar(-.)'" )
   ;|
-  |mk(deb|dsc|rpm))
+  |mk(deb|dsc|bmdeb|rpm))
     args+=( "${ign}--legacy-postinst=:value [1]:(0 1)" )
   ;|
   |mk(tarball|rpm|deb|dsc)) args+=( "${ign}(--source-only --binaries-only)--"{source,binaries}-only ) ;|
@@ -100,7 +103,7 @@ case $cmd in
       '-c[specify location of dkms.conf file]:location:_files'
     )
   ;|
-  |remove|build|install|status|mk(^kmp))
+  |remove|(un|)build|install|status|mk(^kmp))
     args+=( '(-a --arch -k)--all[specify all relevant kernels/arches]' )
   ;|
   |build)
diff --git Completion/Linux/Command/_ethtool Completion/Linux/Command/_ethtool
index dccda4684..95a8bbfb6 100644
--- Completion/Linux/Command/_ethtool
+++ Completion/Linux/Command/_ethtool
@@ -5,16 +5,21 @@ local -a state line expl cmds
 local -A opt_args
 
 _arguments -C \
+  '--debug[turn on debugging messages]:mask:((1\:parser\ information))' \
+  '--json[output results in JSON]' \
+  '(-I --include-statistics)'{-I,--include-statistics}'[include command-related statistics in the output]' \
+  '(cmds)'{-Q,--per-queue}'[apply per-queue command]: :(queue_mask):queue mask' \
   "1:interface:_net_interfaces" \
-  '*: :->args' \
+  '*:: :->args' \
+  + '(cmdc)' \
+  '(cmds)'{-c,--show-coalesce}'[query the specified ethernet device for coalescing information]' \
+  '(cmds)'{-C,--coalesce}'[change the coalescing settings of the specified ethernet device]' \
   + '(cmds)' \
   '(1)'{-h,--help}'[display help information]' \
   '(1)--version[display version information]' \
   {-s,--change}'[allow changing some or all settings of the specified ethernet device]' \
   {-a,--show-pause}'[query the specified ethernet device for pause parameter information]' \
   {-A,--pause}'[change the pause parameters of the specified ethernet device]' \
-  {-c,--show-coalesce}'[query the specified ethernet device for coalescing information]' \
-  {-C,--coalesce}'[change the coalescing settings of the specified ethernet device]' \
   {-g,--show-ring}'[query the specified ethernet device for RX/TX ring parameter information]' \
   {-G,--set-ring}'[change the RX/TX ring parameters of the specified ethernet device]' \
   {-k,--show-features,--show-offload}'[query the specified ethernet device for offload information]' \
@@ -46,10 +51,21 @@ _arguments -C \
   '--set-eee[set EEE settings]' \
   '--set-phy-tunable[set PHY tunable]' \
   '--get-phy-tunable[get PHY tunable]' \
+  '--get-tunable[get tunable parameters]' \
+  "--set-tunable[set driver's tunable parameters]" \
   '--reset[reset hardware components]' \
   '--show-fec[query device for forward error correction support]' \
   '--set-fec[configure forward error correction for device]' \
-  {-Q,--per-queue}'[apply per-queue command]' && return
+  '--cable-test[perform cable test and report the results]' \
+  '--cable-test-tdr[perform cable test and report Time Domain Reflectometer data]' \
+  '--show-tunnels[show tunnel-related device capabilities and state]' \
+  '--monitor[listen to netlink notifications and displays them]::command:(
+    --all -s --change -k --show-features --show-offload -K
+    --features --offload  --show-priv-flags --set-priv-flags -g --show-ring
+    -G --set-ring -l --show-channels -L --set-channels -c --show-coalesce
+    -C --coalesce -a --show-pause -A --pause --show-eee --set-eee
+    --cable-test --cable-test-tdr
+  )' && return
 
 if [[ -n $state ]]; then
   case $words[CURRENT-1] in
@@ -62,7 +78,8 @@ if [[ -n $state ]]; then
       _wanted onoff expl 'enabled' compadd off on
     fi
   ;;
-  autoneg|adaptive-[rt]x|raw|hex|sg|tso|ufo|gso|lro|eee|tx-lpi|downshift|fast-link-down)
+  autoneg|adaptive-[rt]x|raw|hex|sg|tso|ufo|gso|lro|eee|tx-lpi|downshift) ;&
+  fast-link-down|energy-detect-power-down|mode)
     _wanted onoff expl 'enabled' compadd off on
   ;;
   rx-usecs|rx-frames|rx-usecs-irq|rx-frames-irq|tx-usecs|tx-frames) ;&
@@ -71,6 +88,8 @@ if [[ -n $state ]]; then
   rx-frames-high|tx-usecs-high|tx-frames-high|sample-interval|dmac|rx-mini) ;&
   rx-jumbo|offset|length|magic|value|phyad|proto|tos|tclass|l4proto|src-port) ;&
   dst-port|spi|l4data|vlan-etype|vlan|user-def|action|vf|queue|loc) ;&
+  page|bank|i2c|first|last|step|pair|lanes) ;&
+  rx-copybreak|tx-copybreak|pfc-prevention-tout) ;&
   other|combined|tx-timer|count|msecs)
     _message -e numbers 'number'
   ;;
@@ -81,7 +100,10 @@ if [[ -n $state ]]; then
     _wanted duplex expl 'duplex mode' compadd half full
   ;;
   port)
-    _wanted port expl 'device port' compadd tp aui bnc mii fibre
+    _wanted port expl 'device port' compadd tp aui bnc mii fibre da
+  ;;
+  master-slave)
+    _wanted roles expl role compadd {preferred,forced}-{master,slave}
   ;;
   advertise)
     _values 'hexadecimal value (or a combination of the following)' \
@@ -93,7 +115,8 @@ if [[ -n $state ]]; then
       '0x020[1000 full]' \
       '0x8000[2500 full(not supported by IEEE standards)]' \
       '0x800[10000 full]' \
-      '0x03F[auto]'
+      '0x03F[auto]' \
+      'mode[set mode]'
   ;;
   xcvr)
     _wanted xcvr expl 'transceiver type' compadd internal external
@@ -144,7 +167,7 @@ if [[ -n $state ]]; then
     _message -e contexts 'RSS context'
   ;;
   *)
-    case $words[2] in
+    case ${${(Mk)opt_args:#cmd?*}[1]#cmd?-} in
     -A|--pause)
       _values -S ' ' -w 'pause parameter' \
         'autoneg[specify if pause autonegotiation is enabled]' \
@@ -192,6 +215,9 @@ if [[ -n $state ]]; then
     -p|--identify)
       (( CURRENT = 4 )) && _message -e length 'duration (seconds)'
     ;;
+    -S|--statistics)
+      _arguments '(-)--all-groups' '(-)--groups:eth-phy: :eth-mac: :eth-ctrl: :rmon'
+    ;;
     -t|--test)
       _values -S ' ' -w 'test mode' \
         '(online)offline:perform full set of tests possibly causing normal operation interruption (default)]' \
@@ -202,8 +228,10 @@ if [[ -n $state ]]; then
       if (( ! $words[(I)msglvl] )); then
         _values -S ' ' -w 'generic option' \
           'speed[set speed in Mb/s]' \
+          'lanes[set number of lanes]' \
           'duplex[set full or half duplex mode]' \
           'port[select device port]' \
+          'master-slave[configure interface role]' \
           'autoneg[specify if autonegotiation is enabled]' \
           'advertise[set the speed and duplex advertised by autonegotiation]' \
           'phyad[PHY address]' \
@@ -274,16 +302,23 @@ if [[ -n $state ]]; then
       fi
     ;;
     -m|--dump-module-eeprom|--module-info)
-      _wanted options expl option compadd -F line - raw hex offset length
+      _wanted options expl option compadd -F line - raw hex offset \
+          length page bank i2c
     ;;
     --set-eee)
       _wanted behaviours expl behaviour compadd -F line - eee advertise tx-lpi tx-timer
     ;;
     --set-phy-tunable)
-      _wanted options expl tunable compadd -F line - downshift count fast-link-down msecs
+      _wanted options expl tunable compadd -F line - downshift count \
+	  fast-link-down msecs energy-detect-power-down
     ;;
     --get-phy-tunable)
-      _wanted options expl tunable compadd downshift fast-link-down
+      _wanted options expl tunable compadd downshift fast-link-down \
+	  energy-detect-power-down
+    ;;
+    --[gs]et-tunable)
+      _wanted options expl tunable compadd rx-copybreak tx-copybreak \
+          pfc-prevention-tout
     ;;
     --reset)
       _wanted components expl component compadd flags dedicated all \
@@ -303,6 +338,9 @@ if [[ -n $state ]]; then
         _wanted options expl option compadd -c --show-coalescing -C --coalesce
       fi
     ;;
+    --cable-test-tdr)
+      _wanted options expl 'distance options' compadd first last step pair
+    ;;
     esac
   ;;
   esac
diff --git Completion/Linux/Command/_findmnt Completion/Linux/Command/_findmnt
index 9f13e695f..0c832364d 100644
--- Completion/Linux/Command/_findmnt
+++ Completion/Linux/Command/_findmnt
@@ -22,9 +22,12 @@ _arguments -s -C \
   '(H -M --mountpoint :)'{-M+,--mountpoint=}'[specify the mountpoint]: :->targets' \
   '(H -n --noheadings)'{-n,--noheadings}'[do not print a header line]' \
   '(H -O --options)'{-O+,--options=}'[only print the filesystems with the specified options]:list of options: ' \
-  '(H -o --output)'{-o+,--output=}'[specify output columns]: :->columns' \
+  '(H -o --output --output-all)'{-o+,--output=}'[specify output columns]: :->columns' \
+  '(H -o --output)--output-all[output all available columns]' \
   '(H -p --poll)'{-p+,--poll=}'[monitor changes in /proc/self/mountinfo]::action:(mount umount remount move)' \
+  '(H --real)--pseudo[print only pseudo-filesystems]' \
   '(H -R --submounts)'{-R,--submounts}'[print recursively all submounts]' \
+  '(H --pseudo)--real[print only real filesystems]' \
   '(H -S --source :)'{-S+,--source=}'[specify the mount source]: :->sources' \
   '(H -T --target :)'{-T+,--target=}'[specify the mount target]:target:_files' \
   '(H -t --types)'{-t+,--types=}'[specify the type of filesystems]:filesystem types:_sequence -s , _file_systems' \
@@ -39,7 +42,7 @@ _arguments -s -C \
   '(H)2:: :->targets' \
   + '(format)' \
   '(H)'{-D,--df}'[imitate the output of df command]' \
-  '(H)'{-J,--json}'[use JASON output format]' \
+  '(H)'{-J,--json}'[use JSON output format]' \
   '(H)'{-l,--list}'[use list output format]' \
   '(H)'{-P,--pairs}'[use key="value" output format]' \
   '(H)'{-r,--raw}'[use raw output format]' \
@@ -101,7 +104,7 @@ case $state in
 	'prefixes:prefix:compadd -S "" LABEL= UUID= PARTLABEL= PARTUUID='
       )
       [[ $state = sources_targets ]] &&
-	alts+=( 'mount-points:moutpoint:__findmnt_mountpoints' )
+	alts+=( 'mount-points:mountpoint:__findmnt_mountpoints' )
       _alternative $alts && ret=0
     fi
     ;;
diff --git Completion/Linux/Command/_networkmanager Completion/Linux/Command/_networkmanager
index c9b09d145..1e05252b2 100644
--- Completion/Linux/Command/_networkmanager
+++ Completion/Linux/Command/_networkmanager
@@ -244,7 +244,7 @@ _nm_device_wifi() {
   local curcontext="$curcontext" state line
 
   _arguments -C \
-    "1:command:(list connect hotspot rescan)" \
+    "1:command:(list connect hotspot rescan show-password)" \
     "*::arg:->args"
 
   case $line[1] in
@@ -252,6 +252,7 @@ _nm_device_wifi() {
     c*)  _nm_device_wifi_connect ;;
     ho*) _nm_device_wifi_hotspot ;;
     r*)  _nm_device_wifi_rescan ;;
+    s*)  _nm_device_wifi_show-password ;;
   esac
 }
 
@@ -362,6 +363,12 @@ _nm_device_wifi_rescan() {
     "4:ssid:_nm_device_wifi_ssids"
 }
 
+_nm_device_wifi_show-password() {
+  _arguments \
+    "1: :(ifname)" \
+    "2:interface:_nm_device_ifnames"
+}
+
 _nm_device_wifi_bssids() {
   local -a bssids
   bssids=(${(f)"$(_call_program nmcli nmcli -t -f bssid device wifi list)"})
diff --git Completion/Linux/Command/_pidof Completion/Linux/Command/_pidof
index 05fb23d45..dd0649ce9 100644
--- Completion/Linux/Command/_pidof
+++ Completion/Linux/Command/_pidof
@@ -9,6 +9,8 @@ _arguments -C -s -w \
   '(- *)'{-V,--version}'[print program version]' \
   "(-s --single-shot $exargs)"{-s,--single-shot}'[return one PID only]' \
   "(-c --check-root $exargs)"{-c,--check-root}'[omit processes with different root]' \
+  '-q[quiet mode, only set the exit code]' \
+  '(-w --with-workers)'{-w,--with-workers}'[show kernel workers too]' \
   "(-x $exargs)"-x'[include shells running named scripts]' \
   "($exargs)"\*{-o+,--omit-pid=}'[omit processes with PIDs]:pids:_sequence -s , _pids' \
   '(-S --separator)'{-S+,--separator=}'[specify separator put between PIDs]:separator' \
diff --git Completion/Linux/Command/_sysstat Completion/Linux/Command/_sysstat
index 4de855b69..eba99fc5a 100644
--- Completion/Linux/Command/_sysstat
+++ Completion/Linux/Command/_sysstat
@@ -11,6 +11,7 @@ _mpstat() {
     '--dec=-[specify the number of decimal places to use]:decimal places [2]:(0 1 2)' \
     '-o[display statistics in JSON]:format:(JSON)' \
     '(-A)-P[specify processor number]:processor: _values -s "," processor ALL {0..$(_call_program processors getconf _NPROCESSORS_ONLN)}' \
+    '-T[display topology elements in the CPU report]' \
     '-u[report CPU utilization]' \
     '(- 1 2)-V[display version information]' \
     '1: : _guard "^-*" interval' \
@@ -26,6 +27,7 @@ _cifsiostat() {
     '-t[print timestamp for each report]' \
     '(- 1 2)-V[print version number]' \
     '--human[print sizes in human readable format]' \
+    '--pretty[make the CIFS report easier to read by a human]' \
     '1: : _guard "^-*" interval' \
     '2: : _guard "^-*" count'
 }
@@ -49,7 +51,7 @@ _sadf() {
       '-H[display only the header of the report]' \
       '(-g -j -p -r -x)-h[print on a single line when used with -d]' \
       '-O[specify output options]: : _values -s , option
-        autoscale height\:value oneday packed showidle showinfo skipempty showhints' \
+        autoscale bwcol customcol height\:value oneday packed showidle showinfo showtoc skipempty hz\:value pcparchive\:name\:_files debug' \
       '-P[restrict processor dependant statistics]:processor number(zero indexed) or ALL:(ALL)' \
       '--dev=-[specify block devices for which statistics are to be displayed]:block device:_files -g "*(-%)"' \
       '--fs=-[specify filesystems for which statistics are to be displayed]:file system:_dir_list -s ,' \
@@ -66,6 +68,7 @@ _sadf() {
       '-d[output file in SQL format]' \
       '-g[print data in SVG format]' \
       '-j[output file in JSON]' \
+      '-l[export the contents of the data file to a PCP (Performance Co-Pilot) archive]' \
       '-p[print in format parsable by tools like awk]' \
       '-r[print raw contents of data file]' \
       '-x[output file in XML]' \
@@ -105,7 +108,7 @@ _sar() {
     '-o[save readings to file in binary form]:file:_files' \
     '-P[report per-processor statistics]:processor: _values -s "," processors ALL' \
     '-p[pretty-print device names]' \
-    '-q[report queue length and load averages]' \
+    '-q[report queue length and load averages]::keyword:(CPU IO LOAD MEM PSI ALL)' \
     '-R[report memory statistics]' \
     '-r[report memory utilization statistics]:: :(ALL)' \
     '-S[report swap space utilization]' \
diff --git Completion/Linux/Command/_valgrind Completion/Linux/Command/_valgrind
index 23a8cd734..b4bb3248e 100644
--- Completion/Linux/Command/_valgrind
+++ Completion/Linux/Command/_valgrind
@@ -205,6 +205,7 @@ _arguments -C ${(P)args} $cmd \
   '(--version)--tool=-[specify valgrind tool]:valgrind tool:->tools' \
   '(-h --help)'{-h,--help}'[show help information]' \
   '--help-debug[show help info including debugging options]' \
+  '--help-dyn-options[show the dynamically changeable options]' \
   '(-)--version[show version]' \
   '(-q --quiet)'{-q,--quiet}'[run silently; only print error msgs]' \
   '(-v --verbose)'{-v,--verbose}'[be more verbose]' \
diff --git Completion/Linux/Command/_wipefs Completion/Linux/Command/_wipefs
index 5142def8a..8642aab92 100644
--- Completion/Linux/Command/_wipefs
+++ Completion/Linux/Command/_wipefs
@@ -19,6 +19,7 @@ _arguments -s -S \
   '(H -p --parsable -i --no-headings -J --json)'{-p,--parsable}'[print out in parsable instead of printable format]' \
   '(H -q --quiet)'{-q,--quiet}'[suppress output messages]' \
   '(H -t --types)'{-t+,--types=}'[limit the set of filesystem, RAIDs or partition tables]:type:_file_systems' \
+  '(H)--lock=-[use exclusive device lock]::mode:(yes no nonblock)' \
   '(H)*:disk device:_files -g "*(-%)" -P / -W /' \
   + '(H)' \
   '(- *)'{-h,--help}'[display help information]' \
diff --git Completion/Redhat/Command/_rpm Completion/Redhat/Command/_rpm
index db7c1145d..d00f88429 100644
--- Completion/Redhat/Command/_rpm
+++ Completion/Redhat/Command/_rpm
@@ -129,6 +129,7 @@ _rpm () {
     '--scm=[select the SCM to use with %autosetup]:scm [patch]:(patch gendiff git quilt)'
     '*--buildpolicy=[set buildroot policy]:policy:->brp_policies'
     '!--sign'
+    '--trace[trace macro expansion]'
     "--nodebuginfo[don't generate debuginfo for this package]"
   )
 
diff --git Completion/Unix/Command/_abcde Completion/Unix/Command/_abcde
index 361b43091..3f748d373 100644
--- Completion/Unix/Command/_abcde
+++ Completion/Unix/Command/_abcde
@@ -1,50 +1,41 @@
 #compdef abcde
 
-(( $+functions[_abcde_fields] )) ||
-_abcde_fields(){
-  _values -s , field year genre
-}
-
-(( $+functions[_abcde_actions] )) ||
-_abcde_actions(){
-  _values -s , action cddb cue read getalbumart embedalbumart normalize encode tag move replaygain playlist clean
-}
-
-_arguments -s \
+_arguments -s -S -A "-*" \
   '(-t -T -p)-1[encode the whole CD in a single file]' \
-  '-a[comma-delimited list of actions to perform]:action:_abcde_actions' \
+  '-a[comma-delimited list of actions to perform]:action:_sequence compadd - cddb cue read getalbumart embedalbumart normalize encode tag move replaygain playlist clean' \
   '-b[enable batch mode normalization]' \
   '-B[enable automatic embedding of album art with certain containers]' \
-  '-c[specify an additional configuration file to parse]:config:_files' \
-  '-C[resume a session for discid when you no longer have the CD available]:discid' \
-  '-d[CD-ROM block device that contains audio tracks to be read]:cd-rom-file:_files' \
+  '-c+[specify an additional configuration file to parse]:config:_files' \
+  '-C+[resume a session when read was completed but CD is not present]:disc id:compadd abcde.*(N:e)' \
+  '-d+[specify CD device from which to read audio tracks]:CD device:_files -g "*(-%)" -P / -W /' \
   '-D[capture debugging information]' \
   '-e[erase information about encoded tracks from the internal status file]' \
   '-f[force the removal of the temporary ABCDETEMPDIR directory]' \
   "-g[enable lame's --nogap option]" \
   '-G[download album art using the getalbumart function]' \
   '(- :)-h[get help information]' \
-  '-j[start a specified number of encoder processes at once]:number' \
+  '-j+[start specified number of encoder processes at once]:number' \
   '-k[keep the wav files after encoding]' \
-  '-l[use the low-diskspace algorithm]' \
+  '-l[use the low disk space algorithm]' \
   '-L[use a local CDDB repository]' \
   '-m[create DOS-style playlists, modifying the resulting one by adding CRLF line endings those to work]' \
   "-n[don't query CDDB database]" \
   '-N[non interactive mode]' \
-  '-o[select output type]:outputtype:(vorbis ogg mp3 flac spx mpc m4a wav wv ape opus mka aiff)' \
+  '-o+[select output type]:output type [vorbis]:(vorbis ogg mp3 flac spx mpc m4a wav wv ape opus mka aiff)' \
   "-p[pads track numbers with 0's]" \
   '-P[use Unix PIPES to read and encode in one step]' \
-  '-r[remote encode on this comma-delimited list of machines using distmp3]:hosts:_sequence _hosts' \
-  '-s[fields to be shown in the CDDB parsed entries]:field:_abcde_fields' \
-  '-S[set the speed of the CD drive]:speed' \
-  '-t[start the numbering of the tracks at a given number]:track-number' \
-  '-T[start the numbering of the tracks at a given number and change internal tag numbering]:track-number' \
+  '-Q+[specify CD lookup methods]:lookup method [musicbrainz]:_sequence compadd - musicbrainz cddb cdtext' \
+  '-r+[remote encode on this comma-delimited list of machines using distmp3]:hosts:_sequence _hosts' \
+  '-s+[fields to be shown in the CDDB parsed entries]:field:_sequence compadd - year genre' \
+  '-S+[set the speed of the CD drive]:speed' \
+  '-t+[start the numbering of the tracks at a given number]:track-number' \
+  '-T+[start the numbering of the tracks at a given number and change internal tag numbering]:track-number' \
   '-U[set CDDBPROTO to version 5]' \
   '(- :)-v[show the version and exit]' \
   '-V[be more verbose]' \
   '-x[eject the CD when all tracks have been read]' \
-  '-X[use an alternative "cue2discid" implementation]:cue2discid' \
-  '-w[add a comment to the tracks ripped from the CD]:comment' \
-  "-W[concatenate CD's]:cd-number" \
+  '-X+[use an alternative "cue2discid" implementation]:cue2discid:_command_names -e' \
+  '-w+[add a comment to the tracks ripped from the CD]:comment' \
+  "-W+[concatenate CD's]:cd-number" \
   '-z[debug mode]' \
-  '*:tracks:'
+  '*: :_guard "^-*" "track list"'
diff --git Completion/Unix/Command/_ansible Completion/Unix/Command/_ansible
index 65cae148e..6ec7d0c2e 100644
--- Completion/Unix/Command/_ansible
+++ Completion/Unix/Command/_ansible
@@ -22,6 +22,8 @@ case $service in
     args+=(
       '(-K --ask-become-pass)'{-K,--ask-become-pass}'[ask for privilege escalation password]'
       '(-k --ask-pass)'{-k,--ask-pass}'[ask for connection password]'
+      '--list-hosts[output list of matching hosts]'
+      '(-l --limit)'{-l+,--limit=}'[further limit hosts to an additional pattern]:host subset:->hosts'
       '(-T --timeout)'{-T+,--timeout=}'[override the connection timeout]:timeout (seconds) [10]'
       '(-c --connection)'{-c+,--connection=}'[specify connection type]:connection type [smart]:->connect-types'
       '(-u --user)'{-u+,--user=}'[specify remote user for connection]:remote user:_users'
@@ -47,28 +49,14 @@ case $service in
   ansible|ansible-console|ansible-inventory|ansible-playbook|ansible-pull)
     args+=(
       --ask-vault-pass{,word}'[ask for vault password]'
+      '(-e --extra-vars)'{-e+,--extra-vars=}'[set additional variables]:key=value or YAML/JSON'
       '--vault-id=[specify vault identity to use]:vault identity'
       --vault-pass{,word}-file='[specify vault password file]:vault password file:_files'
-    )
-  ;|
-  ansible|ansible-console|ansible-inventory|ansible-playbook|ansible-pull)
-    args+=(
       \*{-i+,--inventory=}'[specify inventory host file or host list]: : _alternative "files\:inventory file\:_files"
 	"hosts\:host\: _sequence _hosts"'
       '!(-i --inventory)--inventory-file=:inventory file:_files'
     )
   ;|
-  ansible|ansible-console|ansible-playbook|ansible-pull)
-    args+=(
-      '--list-hosts[output list of matching hosts]'
-      '(-l --limit)'{-l+,--limit=}'[further limit hosts to an additional pattern]:host subset:->hosts'
-    )
-  ;|
-  ansible|ansible-playbook|ansible-pull)
-    args+=(
-      '(-e --extra-vars)'{-e+,--extra-vars=}'[set additional variables]:key=value or YAML/JSON'
-    )
-  ;|
   ansible|ansible-console|ansible-inventory)
     args+=(
       '--playbook-dir=[specify substitute playbook directory]:directory:_directories'
@@ -80,11 +68,16 @@ case $service in
       "--skip-tags[only run plays and tasks whose tags don't match]"
     )
   ;|
+  ansible|ansible-console)
+    args+=(
+      '--task-timeout[set the task timeout limit]:timeout (seconds)'
+    )
+  ;|
   ansible)
     args+=(
       '(-a --args)'{-a+,--args=}'[specify command or module arguments]:arguments:->args'
       '(-B --background)'{-B+,--background=}'[run asynchronously, failing after specified time]:fail timeout (seconds)'
-      '(-m --module-name)'{-m+,--module-name=}'[specify module]:module:->plugins'
+      '(-m --module-name)'{-m+,--module-name=}'[specify action to execute]: :->plugins'
       '(-o --one-line)'{-o,--one-line}'[condense output]'
       '(-P --poll)'{-P+,--poll=}'[specify the poll interval if using -B]:interval (seconds) [15]'
       '(-t --tree)'{-t+,--tree=}'[specify directory for log output]:directory:_directories'
@@ -111,11 +104,14 @@ case $service in
   ansible-doc)
     args+=(
       '!--metadata-dump' # "internal testing only"
-      '(-l --list -F --list_files -s --snippet)'{-j,--json}'[change output to json format]'
-      '(-l --list -F --list_files -s --snippet)'{-l,--list}'[list available plugins]'
-      '(-l --list -F --list_files -s --snippet)'{-F,--list_files}'[show plugin names and their source files without summaries]'
-      '(-l --list -F --list_files -s --snippet)'{-s,--snippet}'[show playbook snippet for specified plugins]'
-      '(-t --type)'{-t+,--type=}'[choose plugin type]:plugin type [module]:(become cache callback cliconf connection httpapi inventory lookup netconf shell module strategy vars)'
+      '(-l --list -F --list_files -s --snippet --metadata-dump -e --entry-point)'{-j,--json}'[change output to json format]'
+      '(-l --list -F --list_files -s --snippet --metadata-dump -e --entry-point)'{-l,--list}'[list available plugins]'
+      '(-l --list -F --list_files -s --snippet --metadata-dump -e --entry-point)'{-F,--list_files}'[show plugin names and their source files without summaries]'
+      '(-l --list -F --list_files -s --snippet --metadata-dump -e --entry-point)'{-s,--snippet}'[show playbook snippet for specified plugins]'
+      '(-l --list -F --list_files -s --snippet -e --entry-point)--metadata-dump[dump json metadata for all plugins]'
+      '(-l --list -F --list_files -s --snippet --metadata-dump -e --entry-point)'{-e+,--entry-point=}'[select the entry point for roles]:entry point'
+      '(-t --type)'{-t+,--type=}'[choose plugin type]:plugin type [module]:(become cache callback cliconf connection httpapi inventory lookup netconf shell vars module strategy role keyword)'
+      '(-r --roles-path)'{-r+,--roles-path=}'[specify directory containing roles]:directory:_directories'
       '*:plugin:->plugins'
     )
   ;;
@@ -389,6 +385,7 @@ case $state in
       encrypt_string)
 	args+=(
 	  '(-p --prompt)'{-p,--prompt}'[prompt for the string to encrypt]'
+          "--show-input[don't hide input when prompted for the string to encrypt]"
 	  '(-n --name)'{-n+,--name=}'[specify the variable name]:variable'
 	  '--stdin-name=[specify the variable name for stdin]:variable'
 	)
diff --git Completion/Unix/Command/_attr Completion/Unix/Command/_attr
index 121c0c539..efa7c5c4f 100644
--- Completion/Unix/Command/_attr
+++ Completion/Unix/Command/_attr
@@ -23,6 +23,7 @@ case $service in
       '(-e --encoding)'{-e+,--encoding=}'[encode values after retrieving them]:encoding:(text hex base64)' \
       '(-h --no-dereference)'{-h,--no-dereference}"[don't follow symbolic links]" \
       '(-m --match)'{-m+,--match=}'[only include attributes with names matching regex]:regular expression' \
+      '--one-file-system[skip files on different filesystems]' \
       "--absolute-names[don't strip leading slash characters]" \
       '--only-values[dump only attribute values]' \
       '(-R --recursive)'{-R,--recursive}'[list attributes of all files and directories recursively]' \
diff --git Completion/Unix/Command/_dict Completion/Unix/Command/_dict
index 202fc5bab..928728e06 100644
--- Completion/Unix/Command/_dict
+++ Completion/Unix/Command/_dict
@@ -21,6 +21,8 @@ _arguments -C -S \
   '(--key -k)'{--key=,-k+}'[specify key for authentication]:shared secret:' \
   '(-)'{--version,-V}'[display program version]' \
   '(-)'{--license,-L}'[display program license]' \
+  '(-6)-4[force use of IPv4 addresses only]' \
+  '(-4)-6[force use of IPv6 addresses only]' \
   '(-)--help[display usage info]' \
   '(--verbose -v)'{--verbose,-v}'[verbose output]' \
   '(--raw -r)'{--raw,-r}'[be very verbose]' \
diff --git Completion/Unix/Command/_dig Completion/Unix/Command/_dig
index 5245a2964..3081e2cfd 100644
--- Completion/Unix/Command/_dig
+++ Completion/Unix/Command/_dig
@@ -24,10 +24,12 @@ local -a alts args
   '*+'{no,}'ednsnegotiation[set EDNS version negotiation]'
   '*+ednsopt=[specify EDNS option]:code point'
   '*+noedns[clear EDNS options to be sent]'
+  '*+'{no,}'expandaaaa[expand AAAA records]'
   '*+'{no,}'expire[send an EDNS Expire option]'
   '*+'{no,}'header-only[send query without a question section]'
   '*+'{no,}'idnin[set processing of IDN domain names on input]'
   '*+'{no,}'idnout[set conversion of IDN puny code on output]'
+  '*+'{no,}'keepalive[request EDNS TCP keepalive]'
   '*+'{no,}'keepopen[keep TCP socket open between queries]'
   '*+'{no,}'mapped[allow mapped IPv4 over IPv6 to be used]'
   '*+'{no,}'recurse[set the RD (recursion desired) bit in the query]'
@@ -40,12 +42,15 @@ local -a alts args
   '*+'{no,}'identify[print IP and port of responder]'
   '*+'{no,}'comments[print comment lines in output]'
   '*+'{no,}'stats[print statistics]'
+  '*+padding[set padding block size]:size [0]'
   '*+'{no,}'qr[print query as it was sent]'
   '*+'{no,}'question[print question section of a query]'
+  '*+'{no,}'raflag[set RA flag in the query]'
   '*+'{no,}'answer[print answer section of a reply]'
   '*+'{no,}'authority[print authority section of a reply]'
   '*+'{no,}'all[set all print/display flags]'
   '*+'{no,}'subnet[send EDNS client subnet option]:addr/prefix-length'
+  '*+'{no,}'tcflag[set TC flag in the query]'
   '*+timeout=[set query timeout]:timeout (seconds) [5]'
   '*+tries=[specify number of UDP query attempts]:tries'
   '*+retry=[specify number of UDP query retries]:retries'
@@ -57,13 +62,12 @@ local -a alts args
   '*+'{no,}"fail[don't try next server on SERVFAIL]"
   '*+'{no,}'besteffort[try to parse even malformed messages]'
   '*+'{no,}'dnssec[request DNSSEC records]'
-  '*+'{no,}'sigchase[chase DNSSEC signature chains]'
-  '*+trusted-key=[specify file containing trusted keys]:file:_files'
-  '*+'{no,}'topdown[do DNSSEC validation in top down mode]'
   '*+'{no,}'nsid[include EDNS name server ID request in query]'
   '*+'{no,}'ttlid[display the TTL whening printing the record]'
   '*+'{no,}'ttlunits[display the TTL in human-readable units]'
+  '*+'{no,}'unexpected[print replies from unexpected sources]'
   '*+'{no,}'unknownformat[print RDATA in RFC 3597 "unknown" format]'
+  '*+'{no,}'yaml[present the results as YAML]'
   '*+'{no,}'zflag[set Z flag in query]'
 )
 _arguments -s -C $args \
diff --git Completion/Unix/Command/_entr Completion/Unix/Command/_entr
index 3e2261a18..438ab179a 100644
--- Completion/Unix/Command/_entr
+++ Completion/Unix/Command/_entr
@@ -11,6 +11,7 @@ _arguments -s -S \
   '-p[postpone first execution of the utility]' \
   '(-a)-r[reload a persistent child process]' \
   '(*)-s[evaluate the first argument using interpreter specified by $SHELL]' \
+  '-z[exit after the utility completes]' \
   '(-): :->command' \
   '*::arguments:_normal' && ret=0
 
diff --git Completion/Unix/Command/_gem Completion/Unix/Command/_gem
index 53adfb89c..7e244ccad 100644
--- Completion/Unix/Command/_gem
+++ Completion/Unix/Command/_gem
@@ -196,7 +196,7 @@ if [[ $state = command ]]; then
       )
     ;;
     environment)
-      args+=( '1:information:(packageversion gemdir gempath version remotesources platform)' )
+      args+=( '1:information:(gemdir gempath version remotesources platform)' )
     ;;
     fetch)
       def=( both \! local \! remote \! )
@@ -299,6 +299,9 @@ if [[ $state = command ]]; then
         '*:file:_files'
       )
     ;;
+    yank)
+      args+=( '--otp=[specify code for multifactor authentication]:code' )
+    ;;
   esac
   _arguments -C ${args:-'*: :_default'} \
     '(-)'{-h,--help}'[display usage information]' \
diff --git Completion/Unix/Command/_getfacl Completion/Unix/Command/_getfacl
index 15be06a1c..27b5ee1c8 100644
--- Completion/Unix/Command/_getfacl
+++ Completion/Unix/Command/_getfacl
@@ -22,6 +22,7 @@ _arguments -s -S \
   '(-P --physical)'{-P,--physical}"[physical walk, don't follow symbolic links]" \
   '(-t --tabular)'{-t,--tabular}'[use tabular output format]' \
   '(-n --numeric)'{-n,--numeric}'[print numeric user/group identifiers]' \
+  '--one-file-system[skip files on different filesystems]' \
   '(-p --absolute-names)'{-p,--absolute-names}"[don't strip leading '/' in pathnames]" \
   '(- *)'{-v,--version}'[display version information]' \
   '(- *)'{-h,--help}'[display help information]' \
diff --git Completion/Unix/Command/_gnutls Completion/Unix/Command/_gnutls
index 6c9956b10..b9f91264d 100644
--- Completion/Unix/Command/_gnutls
+++ Completion/Unix/Command/_gnutls
@@ -37,6 +37,8 @@ case "$service" in
       '--x509crlfile=[specify CRL file to use]:file:_files'
       '*--x509keyfile=[specify X.509 key file to use]:file:_files'
       '*--x509certfile=[specify X.509 certificate file to use]:file:_files'
+      '*--rawpkkeyfile=[specify private key file or URL to use]:file:_files'
+      '*--rawpkfile=[specify raw public-key file to use]:file:_files'
       '(-l --list -p --port)'{-l,--list}'[print list of the supported algorithms/modes]'
       '--keymatexport=[specify label used for exporting keying material]:label'
       '--keymatexportsize=[specify size of the exported keying material]:size'
@@ -70,7 +72,8 @@ case "$service" in
       '--fastopen[enable TCP Fast Open]'
       "--print-cert[print peer's certificate in PEM format]"
       "--save-cert=[save peer's certificate chain in the specified file in PEM format]:file:_files"
-      "--save-ocsp=[save peer's OCSP status response in the provided file]:file:_files"
+      "(--save-ocsp-multi)--save-ocsp=[save peer's OCSP status response in the provided file]:file:_files"
+      "(--save-ocsp)--save-ocsp-multi=[save all peer's OCSP responses in the provided file]:file:_files"
       '--save-server-trace=[save the server-side TLS message trace in the provided file]:file:_files'
       '--save-client-trace=[save the client-side TLS message trace in the provided file]:file:_files'
       '--dh-bits=[specify minimum number of bits allowed for DH]:bits'
@@ -93,6 +96,8 @@ case "$service" in
       '--inline-commands-prefix=[change delimiter used for inline commands]:delimiter [^]'
       '--fips140-mode[report status of FIPS140-2 mode in gnutls library]'
       '--logfile=[redirect informational messages to a specific file]:file:_files'
+      '--waitresumption[block waiting for the resumption data under TLS1.3]'
+      '--ca-auto-retrieve[enable automatic retrieval of missing CA certificates]'
     )
   ;;
 
@@ -109,6 +114,7 @@ case "$service" in
       "--nodb[don't use a resumption database]"
       '--http[act as an HTTP server]'
       '--echo[act as an Echo server]'
+      "--crlf[don't replace CRLF by LF in Echo server mode]"
       '(-a --disable-client-cert -r --require-client-cert)'{-a,--disable-client-cert}"[don't request a client certificate]"
       '(-a --disable-client-cert -r --require-client-cert)'{-r,--require-client-cert}'[require a client certificate]'
       '--verify-client-cert[if a client certificate is sent then verify it]'
@@ -144,7 +150,8 @@ case "$service" in
       '--verify-crl[verify a CRL]'
       '(--verify-email)--verify-hostname=[specify hostname to be used for certificate chain verification]:hostname:_hosts'
       '(--verify-hostname)--verify-email=[specify email to be used for certificate chain verification]:email:_email_addresses'
-      '--verify-purpose=[specify a purpose OID to be used for certificate chain verification]'
+      '--verify-purpose=[specify a purpose OID to be used for certificate chain verification]:purpose'
+      '--verify-profile=[specify a security level profile to be used for verification]:profile'
       '--p7-sign[sign using a PKCS #7 structure]'
       '--p7-detached-sign[sign using a detached PKCS #7 structure]'
       "--no-p7-include-cert[don't include signer's certificate will in the cert list]"
diff --git Completion/Unix/Command/_gprof Completion/Unix/Command/_gprof
index 3bb7a5765..a7e602fd5 100644
--- Completion/Unix/Command/_gprof
+++ Completion/Unix/Command/_gprof
@@ -3,8 +3,8 @@
 local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
-_arguments -C -s -{a,b,c,D,h,i,l,L,s,T,v,w,x,y,z} \
-           -{A,C,e,E,f,F,J,n,N,O,p,P,q,Q,Z}:'function name:->funcs' \
+_arguments -C -s -{a,b,c,D,h,i,l,L,r,s,T,v,w,x,y,z} \
+           -{A,C,e,E,f,F,J,n,N,O,p,P,q,Q,R,S,t,Z}:'function name:->funcs' \
 	   '-I:directory:_dir_list' \
 	   '-d-:debug level:' '-k:function names:->pair' \
 	   '-m:minimum execution count:' \
diff --git Completion/Unix/Command/_gzip Completion/Unix/Command/_gzip
index 42d4ae705..8354b34d4 100644
--- Completion/Unix/Command/_gzip
+++ Completion/Unix/Command/_gzip
@@ -9,10 +9,14 @@ files=( '*:files:->files' )
 case "$service" in
 unpigz|pigz)
   pigz=(
-    '(-K --zip)'{-K,--zip}'[compress to PKWare zip format]'
+    '(-A --alias)'{-A+,--alias=}'[specify filename to use in zip entry for stdin]:filename'
+    '(-C --comment)'{-C+,--comment=}'[put specified comment in the gzip or zip header]'
+    '(-H --huffman -U --rle)'{-H,--huffman}'[use only Huffman coding for compression]'
+    '(-U --rle -H --huffman)'{-U,--rle}'[use run-length encoding for compression]'
+    '(-K --zip -z --zlib)'{-K,--zip}'[compress to PKWare zip format]'
     '(-b --blocksize)'{-b+,--blocksize}'[set compression block size]:size (KiB)'
     '(-p --processes)'{-p,--processes}'[specify number of processes to use]'
-    '(-z --zlib)'{-z,--zlib}'[compress to zlib (.zz) format]'
+    '(-z --zlib -K --zip)'{-z,--zlib}'[compress to zlib (.zz) format]'
     '(-m --no-time)'{-m,--no-time}"[don't store/restore modification time in/from header]"
     '(-M --time)'{-M,--time}"[store/restore modification time in/from header]"
     '(--synchronous)-Y[force output file write to permanent storage]'
diff --git Completion/Unix/Command/_iostat Completion/Unix/Command/_iostat
index f5291a19b..1152b0d8b 100644
--- Completion/Unix/Command/_iostat
+++ Completion/Unix/Command/_iostat
@@ -128,10 +128,13 @@ case $OSTYPE:l in
       '-c[display CPU utilization report]'
       '-d[display device utilization report]'
       '--dec=-[specify the number of decimal places to use]:decimal places [2]:(0 1 2)'
+      '-f[specify alternative directory to read device statistics from]:directory:_directories'
+      '+f[specify additional directory to read device statistics from]:directory:_directories'
       '*-g[display statistics for a group of devices]:group name'
       '-H[only display global statistics for group]'
       '(--human)-h[human readable device utilization report]'
       '--human[print sizes in human readable format]'
+      '--pretty[make report easier to read by a human]'
       '-j[display persistent device name]:name type:(ID LABEL PATH UUID)'
       '(-m)-k[display statistics in kB/s]'
       '(-k)-m[display statistics in MB/s]'
diff --git Completion/Unix/Command/_java Completion/Unix/Command/_java
index ee0441d97..ff6e82645 100644
--- Completion/Unix/Command/_java
+++ Completion/Unix/Command/_java
@@ -24,18 +24,24 @@ javac)
     '(-cp -classpath)'{-cp,-classpath}'[specify where to find user class files]:class path:->classpath' \
     '-sourcepath[specify where to find input source files]:source path:->sourcepath' \
     '-bootclasspath[override location of bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
+    '-endorseddirs[override location of endorsed standards path]:path:->extdirs' \
     '-extdirs[override location of installed extensions]:extensions directories:->extdirs' \
     '-d[specify where to place generated class files]:directory:_files -/' \
     '-encoding[specify character encoding used by source files]:encoding:->encoding' \
     '-proc\:-[control annotation processing]:annotation processing:(none only)' \
     '-processor[specify annotation processors to run]:class:_files' \
     '-processorpath[specify where to find annotation processors]:directory:_directories' \
+    '-parameters[generate metadata for reflection on method parameters]' \
     '-s[specify directory for generated source files]:directory:_directories' \
+    '-h[specify where to place generated native header files]:directory:_directories' \
     '-source[provide source compatibility with specified release]:release:(1.{2..8} {5..8})' \
     '-target[specify VM version]:release:(1.{1..5})' \
+    '-profile[check that API used is available in the specified profile]:profile' \
     '(-)-help[print a synopsis of standard options]' \
     '(-)-version[print version information]' \
     '(-)-X[display information about non-standard options]' \
+    '-J-[pass flag directly to the runtime system]:flag' \
+    '-Werror[terminate compilation if warnings occur]' \
     '*:java source file:_files -g \*.java\(-.\)' && return 0
   ;;
 
@@ -75,6 +81,7 @@ java)
     '(- 1)-'{\?,help}'[print help message]' \
     '(- 1)-X-[non-standard java option]:option' \
     '(- 1)-jar[specify a program encapsulated as jar]:jar:_files -g \*.jar\(-.\)' \
+    '-splash\:-[show splash screen with specified image]:image:_files' \
     '(-):class:_java_class -m main ${(kv)opt_args[(i)(-classpath|-cp)]}' \
     '*::args:= _normal' \
      && return 0
@@ -90,15 +97,20 @@ javadoc)
     '-help[print help message]' \
     '-doclet[specify a doclet]:doclet:_java_class -t doclet ${(kv)opt_args[(i)-classpath]}' \
     '-docletpath[specify a path to search doclet]:doclet path:->docletpath' \
-    '-1.1[Javadoc 1.1 compatible output]' \
     '-sourcepath[specify path for source files]:source path:->sourcepath' \
-    '-classpath[specify path for user class files]:class path:->classpath' \
+    {-cp,-classpath}'[specify path for user class files]:class path:->classpath' \
+    '-exclude[specify a list of packages to exclude]:package list' \
+    '-subpackages[specify subpackages to recursively load]:subpackage list' \
+    '-breakiterator[compute first sentence with BreakIterator]' \
     '-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
+    '-source[provide source compatibility with specified release]:release' \
     '-extdirs[specify directories for extensions]:extensions directories:->extdirs' \
     '-verbose[print verbose messages]' \
     '-locale[specify locale]:language_country_variant:' \
     '-encoding[specify character encoding for source files]:encoding:->encoding' \
+    "-quiet[don't display status messages]" \
     '-J-[specify java option]:java option:' \
+    '-X[print a synopsis of nonstandard options and exit]' \
     '-d[specify destination directory]:destination directory:_files -/' \
     '-use[display pages for use]' \
     '-version[include @version text]' \
@@ -111,15 +123,27 @@ javadoc)
     '-bottom[specify bottom text]:bottom text:' \
     '-link[generate a link to external reference classes]:document URL:' \
     '-linkoffline[generate a link for external reference class names]:document URL::package list URL:' \
+    '-excludedocfilessubdir[exclude any doc-files subdirectories with given name]:name:_directories' \
     '-group[generate tables for each group]:group heading::package patterns:' \
-    '-nodeprecated[do not document deprecated API]' \
-    '-nodeprecatedlist[do not generate deprecated API list]' \
-    '-notree[do not generate class and interface hierarchy]' \
-    '-noindex[do not generate index]' \
-    '-nohelp[do not generate help link]' \
-    '-nonavbar[do not generate navigation bar]' \
+    "-nodeprecated[don't include @deprecated information]" \
+    '-noqualifier[exclude the list of qualifiers from the output]:qualifier list' \
+    "-nosince[don't include @since information]" \
+    "-notimestamp[don't include hidden time stamp]" \
+    "-nodeprecatedlist[don't generate deprecated API list]" \
+    "-notree[don't generate class and interface hierarchy]" \
+    "-noindex[don't generate index]" \
+    "-nohelp[don't generate help link]" \
+    "-nonavbar[don't generate navigation bar]" \
+    '-serialwarn[generate warning about @serial tag]' \
+    '*-tag[specify single argument custom tag]:tag' \
+    '-taglet[specify fully qualified name of Taglet to register]:taglet' \
+    '-tagletpath[specify path to Taglets]:path:_directories' \
+    '-charset[specify charset of generated documentation]:charset:->encoding' \
     '-helpfile[specify alternative help link]:helpfile path/filename:' \
-    '-stylesheet[specify alternative HTML style sheet]:stylesheet path/filename:' \
+    '-linksource[generate source in HTML]' \
+    '-sourcetab[specify the number of spaces each tab takes up in the source]:spaces' \
+    '-keywords[include HTML meta tags with package, class and member info]' \
+    '-stylesheetfile[specify alternative HTML style sheet]:stylesheet path/filename:_directories' \
     '-docencoding[specify character encoding for output HTML files]:encoding:->encoding' \
     '*:package name, source file or @list:->docsrc' && ret=0
   ;;
@@ -143,9 +167,11 @@ jar)
       'f[specify archive file]' \
       'v[verbose mode]' \
       '(e)m[specify manifest file]' \
+      'n[perform Pack200 normalization after creating a new archive]' \
       '(m)e[specify class of for application entry point]' \
       '0[store only without using ZIP compression]' \
-      'M[do not create manifest file]' \
+      "M[don't create manifest file]" \
+      "P[preserve leading / and .. components on file names]" \
       'i[generate index information for specified jar files]' && return
   else
     jar_cmd="${words[2]#-}"
@@ -171,7 +197,7 @@ javah|javah_g)
     '-help[print help message]' \
     '-version[print version]' \
     '-jni[JNI-style native method function prototypes]' \
-    '-classpath[specify path for user class files]:class path:->classpath' \
+    {-cp,-classpath}'[specify path for user class files]:class path:->classpath' \
     '-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
     '-old[generate old JDK1.0-style header files]' \
     '-force[force output]' \
@@ -182,17 +208,19 @@ javah|javah_g)
 javap)
   _arguments -C \
     '-help[print help message]' \
+    '-version[print version information]' \
+    {-v,-verbose}'[print additional information]' \
     '-l[line and local variable tables]' \
-    '-b[backward compatible to JDK1.1]' \
-    '-public[only public classes and members]' \
-    '-protected[only protected and public classes and members]' \
-    '-package[only package, protected and public classes and members (default)]' \
-    '-private[all classes and members]' \
+    '(-protected -package -p -private)-public[show only public classes and members]' \
+    '(-public -package -p -private)-protected[show only protected/public classes and members]' \
+    '(-public -protected -p -private)-package[show only package/protected/public classes and members (default)]' \
+    '(-public -package -protected -p -private)'{-p,-private}'[show all classes and members]' \
     '-J-[specify java option]:java option:' \
-    '-s[internal type signatures]' \
     '-c[disassemble code]' \
-    '-verbose[stack size, number of locals and args for methods]' \
-    '-classpath[specify path for user class files]:class path:->classpath' \
+    '-s[print internal type signatures]' \
+    '-sysinfo[show system info (path, size, date, MD5 hash) of class being processed]' \
+    '-constants[show final constants]' \
+    {-cp,-classpath}'[specify path for user class files]:class path:->classpath' \
     '-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
     '-extdirs[specify directories for extensions]:extensions directories:->extdirs' \
     '*:class:_java_class ${(kv)opt_args[(i)-classpath]}' && return 0
diff --git Completion/Unix/Command/_less Completion/Unix/Command/_less
index cb71314a6..0b474b991 100644
--- Completion/Unix/Command/_less
+++ Completion/Unix/Command/_less
@@ -1,7 +1,7 @@
 #compdef less -value-,LESS,-default- -value-,LESSCHARSET,-default-
 
-local curcontext="$curcontext" state line expl ret=1
-local -a files
+local curcontext="$curcontext" fgbg=foreground ret=1
+local -a state line expl files basic suf
 
 case $service in
   *LESSCHARSET*)
@@ -37,15 +37,15 @@ _arguments -S -s -A "[-+]*"  \
   '(-b --buffers)'{-b+,--buffers=}'[specify amount of buffer space used for each file]:buffer space (kilobytes)' \
   '(-B --auto-buffers)'{-B,--auto-buffers}"[don't automatically allocate buffers for pipes]" \
   '(-C --CLEAR-SCREEN -c --clear-screen)'{-c,--clear-screen}'[repaint screen instead of scrolling]' \
-  '(-c --clear-screen -C --CLEAR-SCREEN)'{-C,--CLEAR-SCREEN}'[clear screen before repaints]' \
+  '!(-c --clear-screen)'{-C,--CLEAR-SCREEN} \
   '(-d --dumb)'{-d,--dumb}'[suppress error message if terminal is dumb]' \
+  '*-D+[set screen colors]: :->colors' \
   '(-e -E --quit-at-eof --QUIT-AT-EOF)'{-e,--quit-at-eof}'[exit the second time end-of-file is reached]' \
   '(-e -E --quit-at-eof --QUIT-AT-EOF)'{-E,--QUIT-AT-EOF}'[exit when end-of-file is reached]' \
   '(-f --force)'{-f,--force}'[force opening of non-regular files]' \
   '(-F --quit-if-one-screen)'{-F,--quit-if-one-screen}'[exit if entire file fits on first screen]' \
   '(-G --HILITE-SEARCH -g --hilite-search)'{-g,--hilite-search}'[highlight only one match for searches]' \
   '(-g --hilite-search -G --HILITE-SEARCH)'{-G,--HILITE-SEARCH}'[disable highlighting of search matches]' \
-  '--old-bot[revert to the old bottom of screen behavior]' \
   '(-h --max-back-scroll)'{-h+,--max-back-scroll=}'[specify backward scroll limit]:backward scroll limit (lines)' \
   '(-I --IGNORE-CASE -i --ignore-case)'{-i,--ignore-case}'[ignore case in searches that lack uppercase]' \
   '(-i --ignore-case -I --IGNORE-CASE)'{-I,--IGNORE-CASE}'[ignore case in all searches]' \
@@ -83,18 +83,49 @@ _arguments -S -s -A "[-+]*"  \
   '(-\" --quotes)'{-\"+,--quotes=}'[change quoting character]:quoting characters' \
   '(-~ --tilde)'{-~,--tilde}"[don't display tildes after end of file]" \
   '(-\# --shift)'{-\#+,--shift=}"[specify amount to move when scrolling horizontally]:number" \
+  '--file-size[automatically determine the size of the input file]' \
+  '--incsearch[search file as each pattern character is typed in]' \
+  '--line-num-width=[set the width of line number field]:width [7]' \
   '--follow-name[the F command changes file if the input file is renamed]' \
   '--mouse[enable mouse input]' \
   '--no-histdups[remove duplicates from command history]' \
   '--rscroll=[set the character used to mark truncated lines]:character [>]' \
   '--save-marks[retain marks across invocations of less]' \
+  '--status-col-width=[set the width of the -J status column]:width [2]' \
   '--use-backslash[subsequent options use backslash as escape char]' \
+  '--use-color[enable colored text]' \
   '--wheel-lines=[specify lines to move for each click of the mouse wheel]:lines' \
   "$files[@]" && ret=0
 
 
 if [[ -n "$state" ]]; then
   case $state in
+    colors)
+      if compset -P 1 \?; then
+        [[ $IPREFIX[-1] != [a-z] ]] || compset -P 1 + || _describe 'color application' '( +:add\ to\ existing\ attribute )'
+        suf=( -S '' )
+        compset -P 1 '([a-zA-Z]|*.)' && fgbg=background && suf=()
+        basic=( B:blue C:cyan G:green K:black M:magenta R:red W:white Y:yellow )
+        _describe -t colors "$fgbg color" \
+            "( -:default ${(j. .)${(@)basic/:/:light\ }} ${(Lj. .)basic} )" "$suf[@]"  && ret=0
+      else
+        _describe 'text' '(
+          B:binary\ characters
+          C:control\ characters
+          E:errors\ and\ informational\ messages
+          M:mark\ letters\ in\ the\ status\ column
+          N:line\ numbers\ enabled\ via\ the\ -N\ option
+          P:prompts
+          R:the\ rscroll\ character
+          S:search\ results
+          W:the\ highlight\ enabled\ via\ the\ -w\ option
+          d:bold\ text
+          k:blinking\ text
+          s:standout\ text
+          u:underlined\ text
+        )' -S '' && ret=0
+      fi
+    ;;
     prompts)
       if compset -p 1; then
 	_message -e prompt
diff --git Completion/Unix/Command/_mtr Completion/Unix/Command/_mtr
index 806e344d1..9a73cfbd4 100644
--- Completion/Unix/Command/_mtr
+++ Completion/Unix/Command/_mtr
@@ -4,6 +4,7 @@ _arguments -s -S \
   '(H -F --filename)'{-F,--filename}'[read hostnames from a file]' \
   '(H -6)-4[use IPv4 only]' \
   '(H -4)-6[use IPv6 only]' \
+  '(H -I --interface)'{-I+,--interface=}'[use named network interface]: :_net_interfaces' \
   '(H -a --address)'{-a+,--address=}'[bind outgoing packets to specific interface]:source IP:_hosts' \
   '(H -f --first-ttl)'{-f+,--first-ttl=}'[specify TTL to start]:TTL [1]' \
   '(H -m --max-ttl)'{-m+,--max-ttl=}'[specify maximum number of hops to probe]:hops [30]' \
@@ -17,7 +18,6 @@ _arguments -s -S \
   '(H -Q --tos)'{-Q+,--tos=}'[specify type of service for IP header]:tos (0-255)' \
   '(H -e --mpls)'{-e,--mpls}'[display ICMP MPLS information]' \
   '(H -Z --timeout)'{-Z+,--timeout=}'[specify how long to keep probe sockets open before giving up on the connection]:timeout (seconds)' \
-  '(H -M --mark)'{-M+,--mark=}'[mark each sent packet]:mark' \
   '(H -r --report)'{-r,--report}'[report mode]' \
   '(H -w --report-wide)'{-w,--report-wide}"[wide report mode\: don't truncate hostnames]" \
   '(H -c --report-cycles)'{-c+,--report-cycles=}'[report cycles]:number of pings' \
diff --git Completion/Unix/Command/_nm Completion/Unix/Command/_nm
index 2f608c5fc..79f537ac6 100644
--- Completion/Unix/Command/_nm
+++ Completion/Unix/Command/_nm
@@ -62,7 +62,8 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu
         '!(--no-recurse-limit)--recurse-limit'
         '--no-recurse-limit[disable demangling recursion limit]'
 	'(-f --format -P)-f+[specify output format]:format:(bsd sysv posix)'
-	'(-C --no-demangle)--demangle=-[decode symbol names]::style:(auto gnu lucid arm hp edg gnu-v3 java gnat rust dlang)'
+	'(-C --no-demangle)--demangle=-[decode symbol names]::style [auto]:(auto gnu lucid arm hp edg gnu-v3 java gnat rust dlang)'
+        '--ifunc-chars=[specify characters to use for indirect function symbols]:characters for global/local indirect function symbols [ii]'
 	'--plugin[load specified plugin]:plugin'
 	'--special-syms[include special symbols in the output]'
 	'--synthetic[display synthetic symbols as well]'
diff --git Completion/Unix/Command/_objdump Completion/Unix/Command/_objdump
index 5152e6b6e..e2dde7e4c 100644
--- Completion/Unix/Command/_objdump
+++ Completion/Unix/Command/_objdump
@@ -67,7 +67,8 @@ case $variant in
       '(-z --disassemble-zeroes)'{-z,--disassemble-zeroes}"[don't skip blocks of zeroes when disassembling]"
 
       '--start-address=[only process data whose address is >= ADDR]:address'
-      '--stop-address=[only process data whose address is <= ADDR]:address'
+      '--stop-address=[only process data whose address is < ADDR]:address'
+      "--no-addresses[don't print address alongside disassembly]"
       '--prefix-addresses[print complete address alongside disassembly]'
       '(--show-raw-insn --no-show-raw-insn)'--{,no-}show-raw-insn'[display hex alongside symbolic disassembly]'
       '--insn-width=[display specified number of bytes on a single line with -d]:width (bytes)'
@@ -80,6 +81,7 @@ case $variant in
       '--dwarf-start=[display DIEs at specified or deeper depth]:depth'
       '--dwarf-check[perform additional dwarf internal consistency checks]'
       '--ctf-parent=[use specified section as the CTF parent]:section'
+      '--visualize-jumps=-[visualize jumps by drawing ASCII art lines]::color:(color extended-color off)'
     )
   ;;
   elfutils)
@@ -165,6 +167,7 @@ case "$state" in
     _values -s "" "dwarf section" \
         "l[rawline]" "L[decodedline]" "i[info]" "a[abbrev]" "p[pubnames]" \
         "r[aranges]" "m[macro]" "f[frames]" "F[frames-interp]" "s[str]" \
+        'O[str-offsets]' \
         "o[loc]" "R[ranges]" "t[pubtypes]" "U[trace_info]" "u[trace_abbrev]" \
         "T[trace_aranges]" "g[gdb_index]" "A[addr]" "c[cu_index]" "k[links]" \
         "K[follow-links]" && ret=0
@@ -172,7 +175,7 @@ case "$state" in
   dwarf-names)
     _sequence _wanted dwarf-sections expl "dwarf section" compadd - \
         rawline decodedline info abbrev pubnames aranges macro frames \
-        frames-interp str loc Ranges pubtypes gdb_index trace_info \
+        frames-interp str str-offsets loc Ranges pubtypes gdb_index trace_info \
         trace_abbrev trace_aranges addr cu_index links follow-links && ret=0
   ;;
   bfdnames)
diff --git Completion/Unix/Command/_patchutils Completion/Unix/Command/_patchutils
index 50ea3e4c4..a5f6441b1 100644
--- Completion/Unix/Command/_patchutils
+++ Completion/Unix/Command/_patchutils
@@ -85,6 +85,7 @@ case $service in
       '(-H --with-filename -h --no-filename)'{-h,--no-filename}"[don't print the name of the patch file containing each patch]"
       '(-f --file)'{-f+,--file=}'[read regular expressions from file]:file:_files'
       '--output-matching=[display the matching hunk- or file-level diffs]:level:(hunk file)'
+      '--only-match=[restrict regex to matching removals, additions or modifications]:limit:(rem removals add additions mod modifications all)'
     )
   ;;
   splitdiff)
diff --git Completion/Unix/Command/_pgrep Completion/Unix/Command/_pgrep
index 38b1aebd8..afd2fe54b 100644
--- Completion/Unix/Command/_pgrep
+++ Completion/Unix/Command/_pgrep
@@ -31,6 +31,7 @@ arguments=(
   '(-M)-N+[extract name list from specified system]:system file:_files'
   '(-o -n --oldest --newest)'{-n,--newest}'[match newest process]'
   '(-o -n --oldest --newest)'{-o,--oldest}'[match oldest process]'
+  '(-O --older)'{-O+,--older=}'[select where older than specified age]:age (seconds)'
   '(-P --parent)'{-P+,--parent=}'[match only on specified parent process IDs]: :->ppid'
   '(-l)-q[suppress normal output]'
   '(-r --runstates)'{-r+,--runstates}'[match runstates]:run state:compadd -S "" D I R S T t W X Z'
@@ -62,8 +63,8 @@ arguments=(
 case $OSTYPE in
   linux*)
     # Note: We deliberately exclude -v but not --inverse from pkill
-    pgopts=acdFfGghLlnoPrstUuVvwx-
-    pkopts=ceFfGghLnoPstUuVx-
+    pgopts=acdFfGghLlnoOPrstUuVvwx-
+    pkopts=ceFfGghLnoOPstUuVx-
     arguments=(
       ${arguments:#((#s)|*\))(\*|)-[acl]*}
       '(-c --count)'{-c,--count}'[display count of matching processes]'
diff --git Completion/Unix/Command/_rar Completion/Unix/Command/_rar
index 68982be60..d1d381974 100644
--- Completion/Unix/Command/_rar
+++ Completion/Unix/Command/_rar
@@ -4,6 +4,8 @@ local common expl
 
 common=(
   '-ad[append archive name to destination path]'
+  '-ad1[create a separate folder for files unpacked from each archive]'
+  "-ad2[like -ad1 but use archives' own folders]"
   '-ap[set path inside archive]'
   '-av\-[disable authenticity verification check]'
   '-c\-[disable comments show]'
@@ -13,6 +15,7 @@ common=(
   '-dh[open shared files]'
   '-ep[exclude paths from name]'
   '-f[freshen files]'
+  '-idn[hide archived names]'
   '-idp[disable percentage display]'
   '-ierr[send all messages to stderr]'
   '-inul[disable all messages]'
@@ -27,6 +30,7 @@ common=(
   '-tb+[process files modified before a date]:date (YYYYMMDDHHMMSS)'
   '-tn+[process files newer than a specified time]:time'
   '-to+[process files older than a specified time]:time'
+  '-ts-[save or restore time]:time:((m\:modification c\:change a\:access p\:preserve))'
   '-u[update files]'
   '-v[create volumes with size autodetection or list all volumes]'
   '-ver[file version control]'
diff --git Completion/Unix/Command/_readelf Completion/Unix/Command/_readelf
index edabc3da1..fc0fb7ce1 100644
--- Completion/Unix/Command/_readelf
+++ Completion/Unix/Command/_readelf
@@ -18,7 +18,7 @@ args=(
   '(-c --archive-index)'{-c,--archive-index}'[show symbol/file index in an archive]'
   \*{-x,--hex-dump=}"[dump contents of specified section as bytes]:section:($sections)"
   \*{-p,--string-dump=}"[dump contents of specified section as strings]:section:($sections)"
-  '-w+[show the contents of DWARF2 debug sections]::debug section:(l L i a p r m f F s o R t U u T g A c k K)'
+  '-w+[show the contents of DWARF2 debug sections]::debug section:(l L i a p r m f F s o O R t U u T g A c k K)'
   '--debug-dump=[show the contents of DWARF2 debug sections]::section:(rawline decodedline info abbrev pubnames aranges macro frames frames-interp str loc Ranges pubtypes gdb_index trace_info trace_abbrev trace_aranges addr cu_index links follow-links)'
   '(-I --histogram)'{-I,--histogram}'[show histogram of bucket list lengths]'
   '(-W --wide)'{-W,--wide}'[allow output width to exceed 80 characters]'
@@ -50,6 +50,12 @@ case $variant in
   ;|
   binutils)
     args+=(
+      '!(-C --demangle)--no-demangle'
+      '(--demangle)-C[decode symbol names]'
+      '(-C)--demangle=-[decode symbol names]::style [auto]:(auto gnu lucid arm hp edg gnu-v3 java gnat)'
+      '!(--no-recurse-limit)--recurse-limit'
+      '--no-recurse-limit[disable demangling recursion limit]'
+      '(-L --lint --enable-checks)'{-L,--lint,--enable-checks}'[display warning messages for possible problems]'
       \*{-R,--relocated-dump=}"[dump contents of specified section as relocated bytes]:section:($sections)"
       "--dwarf-depth=[don't show DIEs at greater than specified depth]:depth"
       '--dwarf-start=[show DIEs starting at specified depth or deeper]:depth'
@@ -57,6 +63,7 @@ case $variant in
       '--ctf-parent=[use specified section as the CTF parent]:section'
       '--ctf-symbols=[use specified section as the CTF external symbol table]:section'
       '--ctf-strings=[use specified section as the CTF external string table]:section'
+      '(-T --silent-truncation)'{-T,--silent-truncation}"[if a symbol name is truncated, don't add ... suffix]"
     )
   ;;
   elfutils)
diff --git Completion/Unix/Command/_ri Completion/Unix/Command/_ri
index 070f46ac2..4d5a72985 100644
--- Completion/Unix/Command/_ri
+++ Completion/Unix/Command/_ri
@@ -6,26 +6,29 @@ typeset -A opt_args
 _arguments -C \
   '(- *)'{-h,--help}'[print help information and exit]' \
   '(- *)'{-v,--version}'[display the version of ri]' \
-  '*'{-d,--doc-dir}'[directory to search for documentation]:ri doc directory:_files -/' \
-  '(-f --fmt --format)'{-f,--fmt,--format}'[format to use when displaying output]:output format:(ansi bs html plain simple)' \
+  '*'{-d+,--doc-dir=}'[directory to search for documentation]:ri doc directory:_directories' \
+  '(-f --format)'{-f+,--format=}'[format to use when displaying output]:output format [bs]:(ansi bs markdown rdoc)' \
   '(-T --no-pager)'{-T,--no-pager}'[send output directly to stdout]' \
-  '(-i, --interactive)'{-i,--interactive}'[interactive mode]' \
+  '(-i --interactive)'{-i,--interactive}'[interactive mode]' \
+  '(-a --all)'{-a,--all}'[show all documentation for a class or module]' \
+  '(-l --list)'{-l,--list}'[list classes ri knows about]' \
   '--list-doc-dirs[list the directories from which ri will source documentation]' \
-  '(-w --width)'{-w,--width}'[set the width of the output]:output width:' \
-  '--no-standard-docs[do not include documentation from the Ruby standard library, site_lib, installed gems, or ~/.rdoc]' \
-  '(--no-use-cache --use-cache)--'{no-,}'use-cache[whether or not to use ri'\''s cache]' \
-  '(--no-system --system)--'{no-,}'system[include documentation from Ruby'\''s standard library]' \
+  '(-w --width)'{-w+,--width=}'[set the width of the output]:output width [72]' \
+  '(-l --list)--server=-[run RDoc server on the given port]::port [8214]:_ports' \
+  "--no-standard-docs[don't include documentation from the Ruby standard library, site_lib, installed gems, or ~/.rdoc]" \
+  '(--no-use-cache --use-cache)--'{no-,}"use-cache[whether or not to use ri's cache]" \
+  '(--no-system --system)--'{no-,}"system[include documentation from Ruby's standard library]" \
   '(--no-site --site)--'{no-,}'site[include documentation from libraries installed in site_lib]' \
   '(--no-gems --gems)--'{no-,}'gems[include documentation from RubyGems]' \
   '(--no-home --home)--'{no-,}'home[include documentation stored in ~/.rdoc]' \
-  '*:ri name:->ri-name' && ret=0
+  '--profile[run with the Ruby profiler]' \
+  '--dump=[dump data from an ri cache or data file]:cache:_files' \
+  '*:ri name:->ri-name' && return
 
 if [[ "$state" = ri-name ]]; then
   local -a ri_dirs ri_ext ri_names ri_wants ri_names
   local class_dir esc_name dir curtag tag descr expl
 
-  ret=1
-
   if "ruby${words[1]#ri}" -rrdoc/ri/ri_options -e 1 >/dev/null 2>&1; then
     # Old-style Ruby 1.8.x RI
     ri_dirs=( ${(f)"$(_call_program ri-names "ruby${words[1]#ri}" -rrdoc/ri/ri_options -e '"o = RI::Options.instance; o.parse(ARGV); o.path.each { |p| puts p }"' -- ${(kv)opt_args[(I)-d|--doc-dir|--(system|site|gems|home)]})"} )
diff --git Completion/Unix/Command/_ruby Completion/Unix/Command/_ruby
index a57bffcda..0e1f5dbc0 100644
--- Completion/Unix/Command/_ruby
+++ Completion/Unix/Command/_ruby
@@ -15,7 +15,7 @@ all=(
 common=(
   '*-I+[specify $LOAD_PATH directory (may be used more than once)]:library directory:_files -/'
   '-w[turn warnings on for your script]'
-  '-W-[set warning level]:warning level:((0\:silent 1\:medium 2\:verbose))'
+  '-W-[set warning level]:warning level:((0\:silent 1\:medium 2\:verbose \\\:deprecated \\\:experimental))'
   '(-)1:ruby script:_files -g "*.rb(-.)"'
   '*::script argument:= ->normal'
 )
@@ -35,7 +35,7 @@ opts=(
   '(-n)-p[assume loop like -n but print line also like sed]'
   '-s[enable some switch parsing for switches after script name]'
   '-S[look for the script using PATH environment variable]'
-  '-T-[turn on tainting checks]::taint level [1]:((0\:strings\ from\ streams/environment/ARGV\ are\ tainted 1\:no\ dangerous\ operation\ by\ tainted\ value 2\:process/file\ operations\ prohibited 3\:all\ generated\ objects\ are\ tainted 4\:no\ global\ \(non-tainted\)\ variable\ modification/no\ direct\ output))'
+  '!-T-[turn on tainting checks]::taint level [1]:((0\:strings\ from\ streams/environment/ARGV\ are\ tainted 1\:no\ dangerous\ operation\ by\ tainted\ value 2\:process/file\ operations\ prohibited 3\:all\ generated\ objects\ are\ tainted 4\:no\ global\ \(non-tainted\)\ variable\ modification/no\ direct\ output))'
   '(--verbose)-v[print version number, then turn on verbose mode]'
   '(-v)--verbose[turn on verbose mode and disable script from stdin]'
   '-x-[strip off text before #!ruby line and perhaps cd to directory]:directory:_files -/'
@@ -49,11 +49,11 @@ opts=(
   '--jit[enable jit with default options]'
   '--jit-warnings[enable printing JIT warnings]'
   '--jit-debug[enable JIT debugging (very slow)]'
-  '--jit-wait[wait until JIT compilation is finished every time (for testing)]'
+  '--jit-wait[wait until JIT compilation finishes every time (for testing)]'
   '--jit-save-temps[save JIT temporary files]'
   '--jit-verbose=-[print JIT logs of level num or less to stderr]:maximum log level [0]'
-  '--jit-max-cache=-[specify max number of methods to be JIT-ed in a cache]:number [1000]'
-  '--jit-min-calls=-[specify number of calls to trigger JIT]:calls [5]'
+  '--jit-max-cache=-[specify max number of methods to be JIT-ed in a cache]:number [100]'
+  '--jit-min-calls=-[specify number of calls to trigger JIT]:calls [10000]'
 )
 
 irb=(
diff --git Completion/Unix/Command/_script Completion/Unix/Command/_script
index ac3bf3973..7a3960be0 100644
--- Completion/Unix/Command/_script
+++ Completion/Unix/Command/_script
@@ -4,14 +4,19 @@ local args hlp="-h --help -V --version"
 
 if [[ $service = scriptreplay ]]; then
   _arguments -S -s \
-    "(1 -t --timing $hlp)"{-t+,--timing=}'[specify file containing timing output]:timing file:_files' \
-    "(2 -s --typescript $hlp)"{-s+,--typescript=}'[specify file containing terminal output]:typescript file:_files' \
+    "(1 -t --timing -T --log-timing $hlp)"{-t+,-T+,--timing=,--log-timing=}'[specify file containing timing output]:timing file:_files' \
+    "(-I --log-in -B --log-io $hlp)"{-I+,--log-in=}'[specify file containing terminal input]:file:_files' \
+    "(2 -s --typescript -B --log-io $hlp)"{-s+,-O+,--typescript=,--log-out=}'[specify file containing terminal output]:typescript file:_files' \
+    "(-B --log-io -I --log-in -s -O --typescript --log-out $hlp)"{-B,--log-io}'[specify file containing terminal input and output]' \
+    "($hlp)--summary[display overview about recorded session and exit]" \
     "(3 -d --divisor $hlp)"{-d+,--divisor=}'[speed up replay]:factor' \
     "(-m --maxdelay $hlp)"{-m+,--maxdelay=}'[set maximum delay between updates]:delay (seconds)' \
+    "(-x --stream $hlp)"{-x+,--stream=}'[specify stream type]:name:(out in signal or info)' \
+    "(-c --cr-mode $hlp)"{-c+,--cr-mode=}'[specify CR char mode]:mode:(auto never always)' \
     '(- *)'{-h,--help}'[display help information]' \
     '(- *)'{-V,--version}'[display version information]' \
     "(-t --timing $hlp):timing file:_files" \
-    "(-s --typescript $hlp):typescript file:_files" \
+    "(-s --typescript -O --log-out $hlp):typescript file:_files" \
     "(-d --divisor $hlp): :_guard '[0-9.]#' 'timing divisor'"
   return
 fi
@@ -19,12 +24,18 @@ fi
 case $OSTYPE in
   linux*)
     args=( -S
-      "(-a --append $hlp)"{-a,--append}'[append output]'
+      "(-I --log-in $hlp)"{-I,--log-in}'[log stdin to file]:file:_files'
+      "(-O --log-out $hlp)"{-O,--log-out}'[log stdout to file]:file:_files'
+      "(-B --log-io $hlp)"{-B,--log-io}'[log stdin and stdout to file]:file:_files'
+      "(-T --log-timing -t --timing $hlp)"{-T+,--log-timing=}'[log timing information to file]:file:_files'
+      "(-m --logging-format $hlp)"{-m+,--logging-format=}'[specify log file format]:format:(classic advanced)'
+      "(-a --append $hlp)"{-a,--append}'[append to the log file]'
       "(-c --command $hlp)"{-c,--command=}'[run specified command instead of a shell]:command:_cmdstring'
       "(-e --return $hlp)"{-e,--return}'[return exit status of the child process]'
       "(-f --flush $hlp)"{-f,--flush}'[flush output after each write]'
+      "(-E --echo $hlp)"{-E+,--echo=}'[echo input]:when:(auto always never)'
       "($hlp)--force[use output file even when it is a link]"
-      '(-o --output-limit)'{-o+,--output-limit=}'[terminate if output files exceed specified size]:size (bytes)'
+      "(-o --output-limit $hlp)"{-o+,--output-limit=}'[terminate if output files exceed specified size]:size (bytes)'
       "(-q --quiet $hlp)"{-q,--quiet}'[be quiet]'
       "(-t --timing $hlp)"{-t-,--timing=-}'[output timing data]::timing file:_files'
       '(- 1)'{-h,--help}'[display help information]'
diff --git Completion/Unix/Command/_sqlite Completion/Unix/Command/_sqlite
index 0f03c61c1..7ef3c6daa 100644
--- Completion/Unix/Command/_sqlite
+++ Completion/Unix/Command/_sqlite
@@ -22,7 +22,7 @@ options+=(
 )
 
 output_modes=( column HTML line list )
-(( $+sqlite3 )) && output_modes+=( ascii csv quote )
+(( $+sqlite3 )) && output_modes+=( ascii box csv json markdown quote table tabs )
 exclusive=( $^dashes-${^output_modes:l} )
 for display_opt in $output_modes ; do
   # finagle the description to match the way SQLite's -help formats them
@@ -54,6 +54,7 @@ options+=(
   $^dashes'-memtrace[trace all memory allocations and deallocations]'
   $^dashes'-mmap[set default mmap size]:size'
   $^dashes'-newline[set output row separator]:separator [\n]'
+  $^dashes'-nofollow[refuse to open symbolic links to database files]'
   $^dashes'-pagecache[specify size and number of slots for page cache memory]:size (bytes): :slots'
   $^dashes'-readonly[open the database read-only]'
   $^dashes'-stats[print memory stats before each finalize]'
diff --git Completion/Unix/Command/_strip Completion/Unix/Command/_strip
index e7f3418d7..3e1a6b698 100644
--- Completion/Unix/Command/_strip
+++ Completion/Unix/Command/_strip
@@ -32,6 +32,7 @@ if _pick_variant gnu=GNU solaris --version; then
     "--no-merge-notes[don't attempt to remove redundant notes]"
     '*'{-K+,--keep-symbol=}'[keep given symbol]:symbol name'
     '*'{-N+,--strip-symbol=}'[strip given symbol]:symbol name'
+    "*--keep-section=[don't strip given section]:section"
     '(*)-o+[output file]:output file:_files'
     '(-p --preserve-dates)'{-p,--preserve-dates}'[preserve access and modification dates]'
     '(-w --wildcard)'{-w,--wildcard}'[permit wildcards in symbol names]'
diff --git Completion/Unix/Command/_sudo Completion/Unix/Command/_sudo
index e3d12d72f..29e5e6d75 100644
--- Completion/Unix/Command/_sudo
+++ Completion/Unix/Command/_sudo
@@ -14,7 +14,9 @@ done
 
 args=(
   '(-A --askpass)'{-A,--askpass}'[use a helper program for password prompting]'
+  '(-B --bell)'{-B,--bell}'[ring bell when prompting]'
   '(-C --close-from)'{-C+,--close-from=}'[close file descriptors]:lowest fd to close'
+  '(-D --chdir)'{-D+,--chdir=}'[change the working directory before running command]:directory:_directories'
   '(-g --group)'{-g+,--group=}'[run command as the specified group name or ID]:group:_groups'
   '(-)'{-h,--help}'[display help message and exit]'
   '(-h --host)'{-h+,--host=}'[run command on host]:host:_hosts'
@@ -23,6 +25,7 @@ args=(
   \*{-l,--list}"[list user's privileges or check a specific command]"
   '(-n --non-interactive)'{-n,--non-interactive}'[non-interactive mode, no prompts are used]'
   '(-p --prompt)'{-p+,--prompt=}'[use the specified password prompt]:prompt'
+  '(-R --chroot)'{-R+,--chroot=}'[change the root directory before running command]:directory:_directories'
   '(-r --role)'{-r+,--role=}'[create SELinux security context with specified role]: :_selinux_roles'
   '(-S --stdin)'{-S,--stdin}'[read password from standard input]'
   '(-t --type)'{-t+,--type=}'[create SELinux security context with specified type]: :_selinux_types'
diff --git Completion/Unix/Command/_tiff Completion/Unix/Command/_tiff
index da55b541c..ef12777de 100644
--- Completion/Unix/Command/_tiff
+++ Completion/Unix/Command/_tiff
@@ -59,6 +59,7 @@ tiff2pdf)
     '-s+[set document subject, overrides image image description default]:subject' \
     '-k+[set document keywords]:keywords' \
     '-b[set PDF "Interpolate" user preference]' \
+    '-m+[set memory allocation limit]:limit (MiB)' \
     '(- :)-h[display usage information]' \
     ':input file:_files -g "*.(#i)tif(|f)(-.)"'
   ;;
@@ -83,6 +84,7 @@ tiff2ps)
     '-i+[enable/disable (Nz/0) pixel interpolation]:state [enabled]:((0\:disable 1\:enable))' \
     '-l+[set the left margin]:margin (inches)' \
     '-m[use "imagemask" operator instead of "image"]' \
+    '-M+[set memory allocation limit]:limit (MiB)' \
     '-o+[set initial TIFF directory (file offset)]:file offset (bytes)' \
     '(-e)-p[generate non-Encapsulated PostScript]' \
     '-O+[specify output file]:output file:_files -g "*.(#i)(|e)ps(-.)"' \
@@ -121,6 +123,7 @@ tiffcp)
     '-i[ignore read errors]' \
     '-b+[specify bias (dark) monochrome image to be subtracted from all others]:file:_files' \
     '-,=-[specify substitute character for image indices]:character [,]' \
+    '-m+[set memory allocation limit]:limit (MiB)' \
     '-r+[specify rows per strip]:rows per strip' \
     '-w+[specify output tile width]:output tile width' \
     '-l+[specify output tile length]:output tile length' \
diff --git Completion/Unix/Command/_tmux Completion/Unix/Command/_tmux
index 284a325e5..844af58fc 100644
--- Completion/Unix/Command/_tmux
+++ Completion/Unix/Command/_tmux
@@ -127,6 +127,7 @@ _tmux_aliasmap=(
     confirm     confirm-before
     menu        display-menu
     display     display-message
+    popup       display-popup
 
     # buffers
     clearhist   clear-history
@@ -168,6 +169,7 @@ _tmux-attach-session() {
   _arguments -s \
     '-c+[specify working directory for the session]:directory:_directories' \
     '-d[detach other clients attached to target session]' \
+    '-f+[set client flags]: :_tmux_client_flags' \
     '-r[put the client into read-only mode]' \
     '-t+[specify target session]:target session: __tmux-sessions-separately' \
     "-E[don't apply update-environment option]" \
@@ -188,6 +190,8 @@ _tmux-bind-key() {
 _tmux-break-pane() {
   [[ -n ${tmux_describe} ]] && print "break a pane from an existing into a new window" && return
   _arguments -s \
+    '(-b)-a[move window to next index after]' \
+    '(-a)-b[move window to next index before]' \
     "-d[don't make the new window become the active one]" \
     '-F+[specify output format]:format:__tmux-formats' \
     '-P[print information of new window after it has been created]' \
@@ -221,6 +225,7 @@ _tmux-choose-buffer() {
     '-r[reverse sort order]' \
     '-F+[specify format for each list item]:format:__tmux-formats' \
     '-f+[filter items]:filter format:__tmux-formats' \
+    '-K+[specify format for each shortcut key]:format:__tmux-formats' \
     '-O+[initial sort order]:order:(time name size)' \
     '-t+[specify target window]:session:__tmux-windows' \
     '*:::template:= _tmux'
@@ -234,6 +239,7 @@ _tmux-choose-client() {
     '-r[reverse sort order]' \
     '-F+[specify format for each list item]:format:__tmux-formats' \
     '-f+[filter items]:filter format:__tmux-formats' \
+    '-K+[specify format for each shortcut key]:format:__tmux-formats' \
     '-O+[initial sort order]:order:(time name size)' \
     '-t+[specify target window]:session:__tmux-windows' \
     '*:::template:= _tmux'
@@ -248,6 +254,7 @@ _tmux-choose-tree() {
     '-r[reverse sort order]' \
     '-F+[specify format for each list item]:format:__tmux-formats' \
     '-f+[filter items]:filter format:__tmux-formats' \
+    '-K+[specify format for each shortcut key]:format:__tmux-formats' \
     '-O+[initial sort order]:order:(time name size)' \
     '-s[choose among sessions]' \
     '-t+[specify target window]:session:__tmux-windows' \
@@ -275,6 +282,8 @@ _tmux-command-prompt() {
     '-I+[specify list of initial inputs]:initial-text (comma-separated list)' \
     '-p+[specify list of prompts]:prompts (comma-separated list)' \
     '-t+[specify target client]:client:__tmux-clients' \
+    '(-W)-T[prompt is for a target - tab complete as appropriate]' \
+    '(-T)-W[prompt is for a window - tab complete as appropriate]' \
     '*:::template:= _tmux'
 }
 
@@ -289,6 +298,7 @@ _tmux-confirm-before() {
 _tmux-copy-mode() {
   [[ -n ${tmux_describe} ]] && print "enter copy mode" && return
   _arguments -s \
+    '-s+[specify source pane]:pane:__tmux-panes' \
     '-t+[specify target pane]:pane:__tmux-panes' \
     '-e[scrolling to the bottom should exit copy mode]' \
     '-H[hide the position indicator in the top right]' \
@@ -297,6 +307,16 @@ _tmux-copy-mode() {
     '-M[begin a mouse drag]'
 }
 
+_tmux-customize-mode() {
+  [[ -n ${tmux_describe} ]] && print "enter customize mode" && return
+  _arguments -s \
+    '-F+[specify format for each item in the tree]:format:__tmux-formats' \
+    '-f+[specify initial filter]:filter:__tmux-formats' \
+    '-N[start without the option information]' \
+    '-t+[specify target pane]:pane:__tmux-panes' \
+    '-Z[zoom the pane]'
+}
+
 _tmux-delete-buffer() {
   [[ -n ${tmux_describe} ]] && print "delete a paste buffer" && return
   _arguments '-b+[specify target buffer name]:buffer:__tmux-buffers'
@@ -318,6 +338,7 @@ _tmux-display-menu() {
   local -a state line expl
   _arguments -C -s -S -A "-*" \
     '-c+[specify target client]:client:__tmux-clients' \
+    "-O[don't close menu if mouse is released without making a selection]" \
     '-t+[specify target pane]:pane:__tmux-panes' \
     '-T+[specify title]:title' \
     '-x+[specify horizontal position]: : _alternative "columns\: \:_guard \[0-9\]\# column" "positions\:position\:((R\:right P\:bottom M\:mouse W\:window))"' \
@@ -326,7 +347,7 @@ _tmux-display-menu() {
 
   if [[ -n $state ]]; then
     case $(( CURRENT % 3 )) in
-      1) _message -e options 'menu option' ;;
+      1) _message -e menu-options 'menu option' ;;
       2) _message -e keys 'shortcut key' ;;
       0)
 	compset -q
@@ -345,7 +366,9 @@ _tmux-display-message() {
   _arguments -s -S -A "-*" \
     '(-p -F :)-a[list the format variables and their values]' \
     '-I[forward any input read from stdin to the target pane]' \
+    '-N[ignore key presses and only close after the delay]' \
     '-c+[specify target client]:client:__tmux-clients' \
+    '-d+[time to display message]:delay (milliseconds)' \
     '(-a)-p[print message to stdout]' \
     '-t+[specify target pane]:pane:__tmux-panes' \
     '(-a)-F+[specify output format]:format:__tmux-formats' \
@@ -362,9 +385,25 @@ _tmux-display-panes() {
     '*:::command:= _tmux'
 }
 
+_tmux-display-popup() {
+  [[ -n ${tmux_describe} ]] && print "display a popup box over a pane" && return
+  _arguments -s \
+    '-C[close any popup on the client]' \
+    '-c+[specify target client]:client:__tmux-clients' \
+    '-d+[specify working directory for the command]:directory:_directories' \
+    '-E[close the popup when the command exits]' \
+    '-w+[specify width]:width' \
+    '-h+[specify height]:height' \
+    '-t+[specify target pane]:pane:__tmux-panes' \
+    '-x+[specify horizontal position]:position' \
+    '-y+[specify vertical position]:position' \
+    ':shell command:_cmdstring'
+}
+
 _tmux-find-window() {
   [[ -n ${tmux_describe} ]] && print "search for a pattern in windows" && return
   _arguments -s \
+    '-i[ignore case]' \
     '-r[use regular expression matching]' \
     '-C[match visible contents]' \
     '-N[match window name]' \
@@ -454,6 +493,8 @@ _tmux-last-window() {
 _tmux-link-window() {
   [[ -n ${tmux_describe} ]] && print "link a window to another" && return
   _arguments -s \
+    '(-b)-a[move window to next index after destination window]' \
+    '(-a)-b[move window to next index before destination window]' \
     "-d[don't make the new window become the active one]" \
     '-k[kill the target window if it exists]' \
     '-s+[specify source window]:window:__tmux-windows' \
@@ -462,7 +503,9 @@ _tmux-link-window() {
 
 _tmux-list-buffers() {
   [[ -n ${tmux_describe} ]] && print "list paste buffers of a session" && return
-  _arguments '-F+[specify output format]:format:__tmux-formats'
+  _arguments \
+    '-F+[specify output format]:format:__tmux-formats' \
+    '-f+[filter items]:filter format:__tmux-formats'
 }
 
 _tmux-list-clients() {
@@ -498,12 +541,15 @@ _tmux-list-panes() {
   _arguments -s $args \
     '-a[list all panes the server possesses]' \
     '-F+[specify output format]:format:__tmux-formats' \
+    '-f+[filter items]:filter format:__tmux-formats' \
     '-s[if specified, -t chooses a session]'
 }
 
 _tmux-list-sessions() {
   [[ -n ${tmux_describe} ]] && print "list sessions managed by server" && return
-  _arguments '-F+[specify output format]:format:__tmux-formats'
+  _arguments \
+    '-F+[specify output format]:format:__tmux-formats' \
+    '-f+[filter items]:filter format:__tmux-formats'
 }
 
 _tmux-list-windows() {
@@ -511,6 +557,7 @@ _tmux-list-windows() {
   _arguments -s \
     '-a[list all windows the tmux server possesses]' \
     '-F[specify output format]:format:__tmux-formats' \
+    '-f+[filter items]:filter format:__tmux-formats' \
     '-t+[specify session]:session:__tmux-sessions'
 }
 
@@ -518,6 +565,8 @@ _tmux-load-buffer() {
   [[ -n ${tmux_describe} ]] && print "load a file into a paste buffer" && return
   _arguments -A "-*" -S \
     '-b+[specify target buffer name]:buffer:__tmux-buffers' \
+    '-t+[specify target client]:client:__tmux-clients' \
+    '-w[also send the buffer to the clipboard using the xterm escape sequence]' \
     '1:file:_files'
 }
 
@@ -537,21 +586,14 @@ _tmux-lock-session() {
 }
 
 _tmux-move-pane() {
-  [[ -n ${tmux_describe} ]] && print "move a pane into a new space" && return
-  _arguments -s \
-    '-b[join source pane left of or above target pane]' \
-    "-d[don't make the new window become the active one]" \
-    '-h[split horizontally]' \
-    '-v[split vertically]' \
-    "-l+[define new pane's size]:numeric value" \
-    "-p+[define new pane's size in percent]:numeric value" \
-    '-s+[specify source pane]:pane:__tmux-panes' \
-    '-t+[specify target pane]:pane:__tmux-panes'
+ _tmux-join-pane "$@"
 }
 
 _tmux-move-window() {
   [[ -n ${tmux_describe} ]] && print "move a window to another" && return
   _arguments -s \
+    '(-b)-a[move window to next index after destination window]' \
+    '(-a)-b[move window to next index before destination window]' \
     "-d[don't make the new window become the active one]" \
     '-k[kill the target window if it exists]' \
     '-s+[specify source window]:window:__tmux-windows' \
@@ -567,7 +609,9 @@ _tmux-new-session() {
     "-d[don't attach new session to current terminal]" \
     "-D[with -A, detach other clients attached to session]" \
     "-E[don't apply update-environment option]" \
+    '*-e[specify environment variable]:environment variable:_parameters -g "*export*" -qS=' \
     '-F+[specify output format]:format:__tmux-formats' \
+    '-f+[specify client flags]: :_tmux_client_flags' \
     '-n+[specify initial window name]:window name' \
     '-P[print information about new session after it is created]' \
     '-s+[name the session]:session name:__tmux-sessions' \
@@ -581,14 +625,16 @@ _tmux-new-session() {
 _tmux-new-window() {
   [[ -n ${tmux_describe} ]] && print "create a new window" && return
   _arguments -s -A "-*" -S \
-    '-a[insert new window at next free index from -t]' \
+    '(-b)-a[insert new window at next index after target]' \
+    '(-a)-b[insert new window at next index before target]' \
     '-c+[specify working directory for the session]:directory:_directories' \
     '*-e[specify environment variable]:environment variable:_parameters -g "*export*" -qS=' \
-    "-d[don't make the new window become the active one]" \
+    "(-S)-d[don't make the new window become the active one]" \
     '-F+[specify output format]:format:__tmux-formats' \
     '-k[destroy it if the specified window exists]' \
     '-n+[specify a window name]:window name' \
     '-P[print information about new window after it is created]' \
+    '(-d)-S[select window if name already exists]' \
     '-t+[specify target window]:window:__tmux-windows' \
     '*:: :_cmdambivalent'
 }
@@ -640,11 +686,13 @@ _tmux-previous-window() {
 
 _tmux-refresh-client() {
   [[ -n ${tmux_describe} ]] && print "refresh a client" && return
-  _arguments -s -S -A "-*" \
+  _arguments -s -A "-*" -S \
+    '-B+[set a subscription to a format for a control mode client]:subscription' \
+    '-A+[allow a control mode client to trigger actions on a pane]:pane:__tmux-panes -P% -S\:' \
     '-C+[set the width and height of a control client]:width,height' \
     '-c[reset so that the position follows the cursor]' \
     '-D[move visible portion of window down]' \
-    '-F+[specify flags]:flag:(no-output)' \
+    '-f+[set client flags]:flag:_tmux_client_flags' \
     '-L[move visible portion of window left]' \
     '-l[request clipboard from the client and store it in a new paste buf using xterm(1) escape sequence]' \
     "-S[only update the client's status bar]" \
@@ -677,6 +725,7 @@ _tmux-resize-pane() {
     '-R[resize to the right]' \
     '-U[resize upward]' \
     '-t+[specify target pane]:pane:__tmux-panes' \
+    '-T[trim lines below the cursor position and moves lines out of the history to replace them]' \
     '-x+[specify width]:width' \
     '-y+[specify height]:height' \
     '-Z[toggle zoom of pane]' \
@@ -729,10 +778,22 @@ _tmux-rotate-window() {
 
 _tmux-run-shell() {
   [[ -n ${tmux_describe} ]] && print "execute a command without creating a new window" && return
-  _arguments -s -A "-*" -S \
-    '-b[run shell command in background]' \
+  local curcontext="$curcontext" ret=1
+  local -a state line expl
+  _arguments -C -s -A "-*" -S \
+    '-b[run command in background]' \
+    '(1)-C[run a tmux command]' \
+    '-d+[specify delay before starting the command]:delay (seconds)' \
     '-t+[specify target pane]:pane:__tmux-panes' \
-    ':command:_cmdstring'
+    '(2)1:command:_cmdstring' \
+    '2:tmux command:->tmux-commands' && ret=0
+
+  if [[ -n $state ]]; then
+    compset -q
+    words=( run "$words[@]" )
+    (( CURRENT++ ))
+    _tmux && ret=0
+  fi
 }
 
 _tmux-save-buffer() {
@@ -815,6 +876,8 @@ _tmux-set-buffer() {
     '-a[append to rather than overwriting target buffer]' \
     '-b+[specify target buffer index]:pane:__tmux-buffers' \
     '-n+[specify new buffer name]:buffer-name' \
+    '-t+[specify target client]:client:__tmux-clients' \
+    '-w[also send the buffer to the clipboard using the xterm escape sequence]' \
     ':data'
 }
 
@@ -824,7 +887,9 @@ _tmux-set-environment() {
   local curcontext="$curcontext" state line ret=1
   typeset -A opt_args
   _arguments -C -s -A "-*" -S : \
+    '-F[expand value as a format]' \
     '(-t)-g[modify global environment]' \
+    '-h[mark the variable as hidden]' \
     '(-u)-r[remove variable before starting new processes]' \
     '(-r)-u[unset a variable]' \
     '(-g)-t[specify target session]:target session:__tmux-sessions' \
@@ -861,6 +926,7 @@ _tmux-set-option() {
     '-o[prevent setting of an option that is already set]' \
     '-q[suppress errors about unknown or ambiguous options]' \
     '-u[unset a non-global option]' \
+    '-U[unset a pane option across all panes in the window]' \
     '(-w -s)-p[change pane (no session) options]' \
     '(-p -s)-w[change window (not session) options]' \
     '(-p -w)-s[change server (not session) options]' \
@@ -899,6 +965,8 @@ _tmux-set-hook() {
     '-a[append to hook]' \
     '(-R)-g[add hook to global list]' \
     '(-g -u)-R[run hook immediately]' \
+    '(-w)-p[set pane hooks]' \
+    '(-p)-w[set window hooks]' \
     '(-R)-u[unset a hook]' \
     '-t+[specify target session]:session:__tmux-sessions' \
     ':hook name:_tmux_hooks' \
@@ -909,6 +977,8 @@ _tmux-show-hooks() {
   [[ -n ${tmux_describe} ]] && print "show the global list of hooks" && return
   _arguments -s -S -A "-*" \
     '-g[show global list of hooks]' \
+    '(-w)-p[show pane hooks]' \
+    '(-p)-w[show window hooks]' \
     '-t+[specify target session]:session:__tmux-sessions' \
 }
 
@@ -924,6 +994,7 @@ _tmux-show-environment() {
   typeset -A opt_args
   _arguments -C -A "-*" -s : \
     '(-t)-g[show global environment]' \
+    '-h[show hidden variables]' \
     '-s[format output as Bourne shell commands]' \
     '(-g)-t+[specify target session]:target session:__tmux-sessions' \
     '1:: :->name' && ret=0
@@ -986,6 +1057,7 @@ _tmux-show-window-options() {
 _tmux-source-file() {
   [[ -n ${tmux_describe} ]] && print "execute tmux commands from a file" && return
   _arguments \
+    '-F[expand path as a format]' \
     '-n[file is parsed but no commands are executed]' \
     "-q[don't report error if path doesn't exist]" \
     '-v[show parsed commands and line numbers if possible]' \
@@ -1006,6 +1078,7 @@ _tmux-split-window() {
     "(-p)-l[define new pane's size]:size" \
     "!(-f -l)-p+:size (percentage)" \
     '-t+[specify target pane]:pane:__tmux-panes' \
+    '-Z[zoom the pane]' \
     '(:)-I[create empty pane and forward stdin to it]' \
     ':command:_cmdambivalent'
   # Yes, __tmux-panes is correct here. The behaviour was changed
@@ -1065,6 +1138,7 @@ _tmux-unbind-key() {
   _arguments -C -s \
     '-a[remove all key bindings]' \
     '-n[remove a non-prefix binding]' \
+    '-q[prevent errors being returned]' \
     '-T[specify key table]:key table' \
     '*:: :->boundkeys'
 
@@ -1383,6 +1457,11 @@ _tmux_hooks() {
     'post-hooks:command post-hook:compadd - after-${_tmux_aliasmap}'
 }
 
+_tmux_client_flags() {
+  _values -s , flag active-pane ignore-size no-output \
+      'pause-after:time (seconds)' read-only wait-exit
+}
+
 function __tmux-get-optarg() {
     local opt="$1"
     local -i i
@@ -1607,16 +1686,11 @@ function __tmux-options-complete() {
 }
 
 function __tmux-panes() {
-    local expl line
+    local expl line orig="$IPREFIX"
     local -i num
     local -a panes opts
 
-    compset -P '*.'
-    if [[ -n ${IPREFIX} ]]; then
-        opts=( -t "${IPREFIX%.}" )
-    else
-        opts=( )
-    fi
+    compset -P '*.' && opts=( -t "${${IPREFIX%.}#$orig}" )
     num=0
     command tmux 2> /dev/null list-panes "${opts[@]}" | while IFS= read -r line; do
         panes+=( $(( num++ )):${line//:/} )
@@ -1761,10 +1835,13 @@ _tmux() {
     '-2[force using 256 colours]' \
     '-c[execute a shell command]:command name:_command_names' \
     '-C[start tmux in control mode. -CC disables echo]' \
+    "-D[don't start the tmux server as a daemon]" \
     '-f[specify configuration file]:tmux config file:_files -g "*(-.)"' \
     '-l[behave like a login shell]' \
     '-L[specify socket name]:socket name:__tmux-socket-name' \
+    "-N[don't start the server even if the command would normally do so]" \
     '-S[specify socket path]:server socket:_path_files -g "*(=,/)"' \
+    '-T+[set terminal features for the client]: : _values -s , 256 clipboard ccolour cstyle extkeys focus margins mouse overline rectfill RGB strikethrough sync title usstyle' \
     '-u[force using UTF-8]' \
     '-v[request verbose logging]' \
     '-V[report tmux version]' \
diff --git Completion/Unix/Command/_vim Completion/Unix/Command/_vim
index d9dc1a5b3..5c6054e70 100644
--- Completion/Unix/Command/_vim
+++ Completion/Unix/Command/_vim
@@ -27,9 +27,8 @@ arguments=(
   '-D[debugging mode]'
   '-n[no swap file (memory only)]'
   {-r,-L}'[list swap files and exit or recover from a swap file]::swap file:_vim_files -g "*.sw?(-.)"'
-  '(   -H -F)-A[start in Arabic mode]'
-  '(-A    -F)-H[start in Hebrew mode]'
-  '(-A -H   )-F[start in Farsi mode]'
+  '(-H)-A[start in Arabic mode]'
+  '(-A)-H[start in Hebrew mode]'
   '-u[use given vimrc file instead of default .vimrc]:config:->config'
   "--noplugin[don't load plugin scripts]"
   '-o-[number of windows to open (default: one for each file)]::window count: '
@@ -99,8 +98,11 @@ fi
 [[ $service != *view ]] && arguments+='-R[readonly mode]'
 [[ $service = *g* ]] || (( ${words[(I)-g]} )) && arguments+=(
   '(--nofork -f)'{--nofork,-f}'[do not detach the GUI version from the shell]'
+  '(-background -bg)'{-background,-bg}'[use specified color for the background]:color:_x_color'
+  '(-foreground -fg)'{-foreground,-fg}'[use specified color for normal text]:color:_x_color'
   '-font:font:_xft_fonts'
   '-geometry:geometry:_x_geometry'
+  '-iconic[start vim iconified]'
   '(-rv -reverse)'{-rv,-reverse}'[use reverse video]'
   '-display:display:_x_display'
   '--role[set unique role to identify main window]:role'
diff --git Completion/Unix/Command/_w3m Completion/Unix/Command/_w3m
index eff9901ca..de425cfb1 100644
--- Completion/Unix/Command/_w3m
+++ Completion/Unix/Command/_w3m
@@ -1,7 +1,5 @@
 #compdef w3m
 
-# w3m version w3m/0.5.1
-
 local curcontext="$curcontext" state line expl ret=1
 typeset -A opt_args
 
@@ -21,7 +19,7 @@ _arguments -C \
   '(-B *)-v[visual startup mode]' \
   '-M[monochrome display]' \
   '-N[open URL of command line on each new tab]' \
-  '-F[automatically render frame]' \
+  '-F[automatically render frames]' \
   '-cols[specify column width (used with -dump)]:column width' \
   '-ppc[specify the number of pixels per character (4.0...32.0)]:number of pixels (4.0...32.0):' \
   '-ppl[specify the number of pixels per line (4.0...64.0)]:number of pixels (4.0...64.0):' \
@@ -34,17 +32,17 @@ _arguments -C \
   '-header[insert string as a header]:header:' \
   '+-[goto specified line]:line number:_guard "[0-9]#" "line number"' \
   '-num[show line number]' \
+  '-session[use specified session]:id' \
   "-no-proxy[don't use proxy]" \
   '(-6)-4[IPv4 only (-o dns_order=4)]' \
   '(-4)-6[IPv6 only (-o dns_order=6)]' \
   "-no-mouse[don't use mouse]" \
   '(-no-cookie)-cookie[use cookie]' \
   "(-cookie)-no-cookie[don't use cookie]" \
-  '-pauth[proxy authentication]:user\:pass:->pauth' \
-  '(-no-graph)-graph[use graphic character]' \
-  "(-graph)-no-graph[don't use graphic character]" \
+  '(-no-graph)-graph[use DEC special graphics for border of table and menu]' \
+  '(-graph)-no-graph[use ASCII character for border of table and menu]' \
   '-S[squeeze multiple blank lines]' \
-  '-W[toggle wrap search mode]' \
+  '-W[toggle search wrap mode]' \
   "-X[don't use termcap init/deinit]" \
   '-title=[set buffer name to terminal title string]:terminal:_terminals' \
   '*-o[assign value to config option]:option=value:->option' \
@@ -97,14 +95,6 @@ case "$state" in
       _describe -t options 'option' options "$suf[@]" && ret=0
     fi
   ;;
-  pauth)
-    if compset -P 1 '*:'; then
-      _message -e passwords 'password'
-    else
-      compset -S ':*' || suf=( -S ':' )
-      _users "$suf[@]" && ret=0
-    fi
-  ;;
 esac
 
 return ret
diff --git Completion/Unix/Command/_wget Completion/Unix/Command/_wget
index d061fcd06..50fd7791a 100644
--- Completion/Unix/Command/_wget
+++ Completion/Unix/Command/_wget
@@ -34,6 +34,8 @@ _arguments -C -s \
   '(--server-response -S)'{--server-response,-S}'[print server response]' \
   "--spider[don't download anything]" \
   '(--timeout -T)'{--timeout=,-T+}'[set all timeout values]:timeout (seconds)' \
+  '--dns-servers=[specify DNS servers to query]:DNS server:_sequence _hosts' \
+  '--bind-dns-address=[bind DNS resolver to specified address]:hostname or IP on local host' \
   '(--timeout -T)--dns-timeout=[set the DNS lookup timeout]:DNS lookup timeout (seconds)' \
   '(--timeout -T)--connect-timeout=[set the connect timeout]:connect timeout (seconds)' \
   '(--timeout -T)--read-timeout=[set the read timeout]:read timeout (seconds)' \
@@ -107,7 +109,7 @@ _arguments -C -s \
   "--ca-directory=[specify dir where hash list of CA's are stored]:directory:_directories" \
   '--crl-file=[specify file with bundle of CRLs]:file:_files' \
   '--pinnedpubkey=:file:_files' \
-  '!--random-file=:file:_files' \
+  '--random-file[specify file with random data for seeding generator]:file:_files' \
   '--egd-file=[specify filename of EGD socket]:file:_files' \
   '--ciphers=[set the priority string (GnuTLS) or cipher list string (OpenSSL) directly]:string' \
   '--no-hsts[disable HSTS]' \
diff --git Completion/Unix/Command/_wiggle Completion/Unix/Command/_wiggle
index 0a2f0c0cb..1d747a479 100644
--- Completion/Unix/Command/_wiggle
+++ Completion/Unix/Command/_wiggle
@@ -1,15 +1,17 @@
 #compdef wiggle
 
-local fns='-m --merge -d --diff -x --extract'
+local fns='-m --merge -d --diff -x --extract -B --browse'
 
 _arguments \
   "($fns -1 -2 -3)"{-m,--merge}'[select the merge function]' \
   "($fns -3 3)"{-d,--diff}'[display differences between files]' \
   "($fns 2 3)"{-x,--extract}'[extract one branch of a patch or merge file]' \
   '(-w --words -l --lines)'{-w,--words}'[make operations and display word based]' \
-  '(-l --lines -w --words)'{-l,--lines}'[make operations and display line based]' \
+  '(-l --lines -w --words --non-space)'{-l,--lines}'[make operations and display line based]' \
+  '(-l --lines)--non-space[words are separated by spaces]' \
   '(-p --patch)'{-p,--patch}'[treat last named file as a patch]' \
   '(-r --replace)'{-r,--replace}'[replace original file with merged output]' \
+  '--no-backup[never save original file (as name.porig)]' \
   '(-R --reverse -x --extract)'{-R,--reverse}'[swap the files or revert changes]' \
   '(-2 -3 -m --merge)-1[select branch]' \
   '(-1 -3 -m --merge)-2[select branch]' \
diff --git Completion/Unix/Command/_xmlsoft Completion/Unix/Command/_xmlsoft
index 9f1206988..08b123e54 100644
--- Completion/Unix/Command/_xmlsoft
+++ Completion/Unix/Command/_xmlsoft
@@ -80,6 +80,7 @@ case $service in
       '(--dtdvalid --relaxng --schema)--postvalid[do a posteriori validation, i.e after parsing]' \
       '(--postvalid --relaxng --schema --dtdvalidfpi)--dtdvalid[do a posteriori validation against a given DTD]:DTD:_webbrowser' \
       '(--postvalid --relaxng --schema --dtdvalid)--dtdvalidfpi[as --dtdvalid but specify DTD with public identifier]:DTD identifier' \
+      '--quiet[be quiet when successful]' \
       '--timing[print some timings]' \
       '(--noout --output -o)'{--output,-o}'[save to a given file]:output file:_files' \
       '--repeat[repeat 100 times, for timing or profiling]' \
diff --git Completion/Unix/Command/_xxd Completion/Unix/Command/_xxd
index 3a8efd664..31d26ab64 100644
--- Completion/Unix/Command/_xxd
+++ Completion/Unix/Command/_xxd
@@ -39,6 +39,7 @@ arguments=(
   {-g+,-groupsize}'[specify the number of octets per group]: :_guard "[0-9]#" "number of octets per group"'
   {-l+,-len}'[specify number of octets to output]: :_guard "[0-9]#" "number of octets to output"'
   {-o+,-offset}'[add specified offset to displayed file position]:offset'
+  '-d[show offset in decimal instead of hex]'
   {-s,-skip,-seek}'[specify file offset to dump from]: :_guard "[0-9]#" "file offset to dump from (absolute or relative)"'
 
   ': :_files'
diff --git Completion/X/Command/_xrandr Completion/X/Command/_xrandr
index 6143054aa..2551e1958 100644
--- Completion/X/Command/_xrandr
+++ Completion/X/Command/_xrandr
@@ -36,6 +36,7 @@ _arguments -C \
   '*--set:property:(Backlight scaling\ mode):value:->value' \
   '*--scale:output scaling:' \
   '*--transform:transformation matrix:' \
+  '*--filter:mode:(nearest bilinear)' \
   '*--off[disable the output]' \
   '*--crtc:crtc to use:' \
   '*--panning:panning:' \
diff --git Completion/X/Command/_xterm Completion/X/Command/_xterm
index 6d98985e7..180c2eb21 100644
--- Completion/X/Command/_xterm
+++ Completion/X/Command/_xterm
@@ -3,7 +3,7 @@
 _xt_arguments \
   -+{132,ah,ai,aw,bc,bdc,cb,cjk_width,cm,cn,cu,dc,fbb,fbx,fullscreen,hf,hm,hold,ie,im,itc,j,k8,l,lc,ls,maximized,mb,mesg,mk_width,nul,pc,pob,rvc,rw,s,samename,sb,sf,si,sk,sm,sp,t,u8,uc,ulc,ulit,ut,vb,wc,wf} \
   -{version,help,leftbar,rightbar,C} \
-  '-report-'{charclass,colors,fonts} \
+  '-report-'{charclass,colors,fonts,icons,xres} \
   '-T:title' \
   '-b:inner border size:' \
   '-baudrate:rate [38400]' \


^ permalink raw reply	[flat|nested] 8+ messages in thread
* PATCH: completion options update
@ 2018-11-11  8:57 Oliver Kiddle
  0 siblings, 0 replies; 8+ messages in thread
From: Oliver Kiddle @ 2018-11-11  8:57 UTC (permalink / raw)
  To: Zsh workers

This is the latest installment of the usual completion options update
based on -h output comparisons. Applicable versions are:

ansible 2.7
dmidecode 3.2
ethtool 4.19
jq 1.6
links 2.17
luarocks 3.0.3
mpc 0.31
tmux 2.8
valgrind 3.14.0
samba 4.9.1 (smbclient)
OpenBSD 6.4 (dhclient, ssh, vmctl)
util-linux 2.33 (column, losetup, lsblk, script)

btrfs 4.17.1

My first attempt to send this failed with a message indicating that the
list rejects messages larger than 80K so I'll send the btrfs patch
separately.

Oliver

diff --git a/Completion/BSD/Command/_vmctl b/Completion/BSD/Command/_vmctl
index 4e66c2383..66d9081b0 100644
--- a/Completion/BSD/Command/_vmctl
+++ b/Completion/BSD/Command/_vmctl
@@ -1,16 +1,18 @@
 #compdef vmctl
 
-local context line state state_descr
-local -a subcommands vmctl_status
-local -A opt_args
+local -a subcommands alts
 
-_vm_name() {
-  compadd "$@" - ${${${(@f)"$(_call_program vmctl_status vmctl status)"}[2,-1]}##* }
+_vm_names() {
+  local expl
+  _description virtual-machines expl 'virtual machine'
+  compadd "$@" "$expl[@]" - ${${${(@f)"$(_call_program virtual-machines vmctl status)"}[2,-1]}##* }
 }
 
-_vm_switch() {
+_vm_switches() {
+  local expl
+  _description virtual-switches expl 'virtual switch'
   [[ -r /etc/vm.conf ]] &&
-  compadd "$@" - ${${${(M)${(f)"$(</etc/vm.conf)"}:#switch *}##switch ##\"#}%%\"# *}
+  compadd "$@" "$expl[@]" - ${${${(M)${(f)"$(</etc/vm.conf)"}:#switch *}##switch ##\"#}%%\"# *}
 }
 
 subcommands=(
@@ -26,22 +28,30 @@ subcommands=(
   {show,status}:'list VMs running or just the specified id'
   start:'start a VM'
   stop:'stop a VM'
-  unpause:'unpause a VM'
+  unpause:'resume a VM'
 )
 
 if (( CURRENT == 2 )); then
   _describe subcommand subcommands
 else
+  local curcontext="${curcontext%:*}-${words[2]}:"
   shift words; (( CURRENT-- ))
   case $words[1] in
-    console|pause|send|show|status|stop|unpause)
-      _arguments ':id:_vm_name'
+    console|pause|send|show|status|unpause)
+      _vm_names
       ;;
     create)
-      _arguments \
-        ':path:_files' \
-        ': :(-s)' \
-        ':disk size in megabytes: '
+      if (( CURRENT == 2 )); then
+	compset -P '(raw|qcow2):' || alts=(
+	  'prefixes:prefix:compadd -S: raw qcow2'
+	)
+	_alternative 'files:path:_files' $alts
+      else
+	shift words; (( CURRENT-- ))
+	_arguments \
+	  '-s+[specify size]:size' \
+	  '-b+[specify base disk]:base image:_files'
+      fi
       ;;
     load)
       _arguments ':configuration file:_files'
@@ -61,7 +71,7 @@ else
       ;;
     start)
       if (( CURRENT == 2 )); then
-        _vm_name
+        _vm_names
       else
         shift words; (( CURRENT-- ))
         _arguments -s \
@@ -71,9 +81,22 @@ else
           '-i+[number of network interfaces]:number: ' \
           '-L[add a local network interface]' \
           '-m+[memory size in megabytes]:megabytes: ' \
-          '-n+[specify switch to attach]:switch:_vm_switch' \
-	  '-r+[ISO image file for virtual CD-ROM]:ISO image:_files'
+          '-n+[specify switch to attach]: :_vm_switches' \
+	  '-r+[ISO image file for virtual CD-ROM]:ISO image:_files' \
+	  '-t+[use existing VM as a template]: :_vm_names'
       fi
-      ;;
+    ;;
+    stop)
+      if (( CURRENT == 2 )); then
+	_alternative \
+	  'all:all:(-a)' \
+	  'virtual-machines: :_vm_names'
+      else
+	shift words; (( CURRENT-- ))
+	_arguments \
+	  '-f[forcefully stop without attempting a graceful shutdown]' \
+	  '-w[wait until the VM has been terminated]'
+      fi
+    ;;
   esac
 fi
diff --git a/Completion/Linux/Command/_ethtool b/Completion/Linux/Command/_ethtool
index 84f2837a8..33b7681dc 100644
--- a/Completion/Linux/Command/_ethtool
+++ b/Completion/Linux/Command/_ethtool
@@ -106,6 +106,7 @@ if [[ -n $state ]]; then
       '(d)a[wake on ARP]' \
       '(d)g[wake on MagicPacket(tm)]' \
       '(d)s[enable SecureOn(tm) password for MagicPacket(tm)]' \
+      '(d)f[wake on filter(s)]' \
       '(p u m b a g s)d[disable (wake on nothing)]'
   ;;
   sopass)
@@ -138,9 +139,6 @@ if [[ -n $state ]]; then
   flags)
     _message -e masks mask
   ;;
-  encoding)
-    _wanted encodings expl encoding compadd auto off rs baser
-  ;;
   context)
     _message -e contexts 'RSS context'
   ;;
@@ -255,7 +253,7 @@ if [[ -n $state ]]; then
         hkey hfunc delete
     ;;
     -f|--flash)
-      if (( CURRENT = 4 )); then
+      if (( CURRENT == 4 )); then
         _files
       else
         _message -e regions region
@@ -291,7 +289,11 @@ if [[ -n $state ]]; then
           {mgmt,irq,dma,filter,offload,mac,phy,ram,ap}{,-shared}
     ;;
     --set-fec)
-      _wanted options expl tunable compadd -F line - encoding
+      if (( CURRENT == 4 )); then
+        _wanted options expl tunable compadd - encoding
+      else
+        _wanted encodings expl encoding compadd -F line auto off rs baser
+      fi
     ;;
     esac
   ;;
diff --git a/Completion/Linux/Command/_losetup b/Completion/Linux/Command/_losetup
index 9cfaaf5bf..d826e8d51 100644
--- a/Completion/Linux/Command/_losetup
+++ b/Completion/Linux/Command/_losetup
@@ -18,7 +18,8 @@ _arguments -s -S \
   - 'info' \
   '(-v --verbose)'{-v,--verbose}'[verbose mode]' \
   '(-o --offset -a --all)'{-a,--all}'[show the status of all loop devices]' \
-  '(-O --output)'{-O+,--output=}'[specify columns to be printed with --list]:column:_sequence -s , compadd - name autoclear back-file back-ino back-maj\:min maj\:min offset partscan ro sizelimit dio log-sec' \
+  '(-O --output --output-all)'{-O+,--output=}'[specify columns to be printed with --list]:column:_sequence -s , compadd - name autoclear back-file back-ino back-maj\:min maj\:min offset partscan ro sizelimit dio log-sec' \
+  '(-O --output)--output-all[output all columns]' \
   '(-J --json --raw -O --output -n --noheadings)'{-J,--json}'[use JSON --list output format]' \
   '(-l --list)'{-l,--list}'[list currently used loop devices]' \
   '(-J --json)--raw[raw output format]' \
diff --git a/Completion/Linux/Command/_lsblk b/Completion/Linux/Command/_lsblk
index f37305445..1a3687c45 100644
--- a/Completion/Linux/Command/_lsblk
+++ b/Completion/Linux/Command/_lsblk
@@ -15,6 +15,7 @@ _arguments -C -s -S \
   '(H -p --paths)'{-p,--paths}'[print complete device path]' \
   '(H -s --inverse)'{-s,--inverse}'[reverse dependency order]' \
   '(H -x --sort)'{-x+,--sort=}'[sort output by specified column]:column:->columns' \
+  '(H)--sysroot=[use specified directory as system root]:directory:_directories' \
   '*:device:_files -g "*(-%b)" -P / -W /' \
   + fields \
   '(H -D --discard -o --output -O --output-all)'{-D,--discard}'[output discard capabilities]' \
diff --git a/Completion/Linux/Command/_valgrind b/Completion/Linux/Command/_valgrind
index 4187c3cc1..21b7d88c7 100644
--- a/Completion/Linux/Command/_valgrind
+++ b/Completion/Linux/Command/_valgrind
@@ -1,8 +1,8 @@
 #compdef valgrind -value-,VALGRIND_OPTS,-default-
 
 local curcontext="$curcontext" state line
-local -a cmd common common_{mem_null,read_varinfo}
-local -a args args_{addrcheck,drd,memcheck,cachegrind,helgrind,lackey,massif,none}
+local -a cmd common_{own_malloc,read_varinfo,report_errors,partial}
+local -a args args_{addrcheck,drd,memcheck,cachegrind,helgrind,lackey,massif,none,exp_{bbv,dhat,sgcheck}}
 
 cmd=(
   '1: : _command_names -e'
@@ -16,31 +16,74 @@ if [[ $service = *_OPTS* ]]; then
   cmd=()
 fi
 
-common=(
-  '--alignment=-[set minimum alignment of allocations]:number'
+common_own_malloc=(
+  '--alignment=-[set minimum alignment of heap allocations]:number [16]'
+  '--redzone-size=-[set minimum size of redzones added before/after heap blocks]:size (bytes) [16]'
+  '--xtree-memory=-[profile heap memory in an xtree [none]:(none allocs full)'
+  '--xtree-memory-file=-[specify xtree memory report file]:file [xtmemory.kcg.%p]:_files'
 )
 
 common_read_varinfo=(
   '--read-var-info=-[read DWARF3 debug info]:enable:(yes no)'
 )
 
-common_mem_null=(
+common_report_errors=(
   '--xml=-[output everything in XML]:enable:(yes no)'
+  '--xml-fd=-[send XML output to file descriptor]:file descriptor:_file_descriptors'
+  '--xml-file=-[send XML output to specified file]:file:_files'
+  '--xml-socket=-[send XML output to specified socket]:socket:_hosts'
   '--xml-user-comment=-[copy specified string verbatim to XML output]:string'
+  '--demangle=-[automatically demangle C++ names]:enable:(yes no)' \
+  '--num-callers=-[specify no of callers to show in stack traces]:number' \
+  '--error-limit=-[stop showing new errors if too many]:enable:(yes no)' \
+  '--exit-on-first-error=-[exit on the first error]:enable:(yes no)' \
+  '--error-exitcode=-[exit code to return if errors found]:exit code' \
+  '--error-markers=-[add lines with begin/end markers before/after]:markers (begin,end)' \
+  '--keep-debuginfo=-[keep symbols etc for unloaded code]:enable:(yes no)' \
+  '--show-below-main=-[continue stack traces below main()]:enable [no]:(yes no)' \
+  '--default-suppression=-[load default suppressions]:enable [yes]:(yes no)' \
+  '--suppressions=-[suppress errors described in specified file]:file:_files' \
+  '--gen-suppressions=-[print suppressions for errors detected]:enable:(yes no)' \
+  '--input-fd=-[specify file descriptor for input]:file descriptor:_file_descriptors' \
+  '--max-stackframe=-[assume stack switch for SP changes larger than specified size]:size (bytes)' \
+  "--main-stacksize=-[set size of main thread's stack]:size (bytes)" \
+)
+[[ $OSTYPE = darwin* ]] && common_report_errors+=(
+  '--dsymutil=-[run dsymutil on Mac OS X when helpful]:enable [yes]:(yes no)'
 )
 
+common_partial='--partial-loads-ok=-:enable:(yes no)'
+
 args_addrcheck=(
-  $common
+  $common_own_malloc
   $common_mem_null
-  '--partial-loads-ok=-:enable:(yes no)'
-  '--freelist-vol=-[volume of freed blocks queue]:blocks'
-  '--leak-check=-[search for memory leaks at exit]:enable:(yes no)'
-  '--leak-resolution=-[how much bt merging in leak check]:level:(low med high)'
-  '--show-reachable=-[show reachable blocks in leak check]:enable:(yes no)'
-  '--workaround-gcc296-bugs=-:enable:(yes no)'
+  '--leak-check=-[search for memory leaks at exit]:enable [summary]:(no summary full)'
+  '--leak-resolution=-[specify differentiation of leak stack traces]:level [high]:(low med high)'
+  '(--show-reachable --show-possibly-lost)--show-leak-kinds=-[specify leak kinds to show]:leak kind [definite,possible]:_sequence compadd - definite indirect possible reachable'
+  '--errors-for-leak-kinds=-[specify which leak kinds are errors]:leak kind [definite,possible]:_sequence compadd - definite indirect possible reachable all none'
+  '--leak-check-heuristics=-[specify heuristics to use for during leak searches]:heuristic:_sequence compadd - stdstring length64 newarray multipleinheritance all none'
+  '(--show-leak-kinds)--show-reachable=-[show reachable blocks in leak check]:enable:(yes no)'
+  '(--show-leak-kinds)--show-possibly-lost=-:enable:(yes no)'
+  '--xtree-leak=-[output leak result in xtree format]:enable [no]:(yes no)'
+  '--xtree-leak-file=-[specify xtree leak report file]:file [xtleak.kcg.%p]:_files'
+  '--undef-value-errors=-[check for undefined value errors]:enable [yes]:(yes no)'
+  '--track-origins=-[show origins of undefined values]:enable [no]:(yes no)'
+  $common_partial
+  '--expensive-definedness-checks=-[use extra-precise definedness tracking]:enable [auto]:(no auto yes)'
+  '--freelist-vol=-[specify volume of freed blocks queue]:blocks [20000000]'
+  '--freelist-big-blocks=-[release first blocks larger than specified size]:size [1000000]'
+  '--workaround-gcc296-bugs=-:enable [no]:(yes no)'
+  '--ignore-ranges=-[assume given addresses are OK]:address ranges'
+  "--ignore-range-below-sp=-[don't report errors for accesses at the given offsets below SP]:offsets"
+  "--malloc-fill=-[fill malloc'd areas with given value]:value (hex)"
+  "--free-fill=-[fill free'd areas with given value]:value (hex)"
+  "--keep-stacktraces=-[control which stack traces to keep for malloc'd/free'd areas]:stack traces [alloc-and-free]:(alloc free alloc-and-free alloc-then-free none)"
+  "--show-mismatched-frees=-[show frees that don't match the allocator]:enable [yes]:(yes no)"
 )
 
 args_drd=(
+  $common_own_malloc
+  $common_read_varinfo
   '--check-stack-var=-[detect data races on stack variables]:enable [no]:(yes no)'
   '--exclusive-threshold=-[print an error if any mutex or writer lock is held longer than specified time]:time (ms)'
   '--first-race-only=-[report only the first detected data race]:enable [no]:(yes no)'
@@ -73,11 +116,14 @@ args_memcheck=(
 args_cachegrind=(
   '--I1=-[set I1 cache manually]:size,assoc,line_size'
   '--D1=-[set D1 cache manually]:size,assoc,line_size'
-  '--L2=-[set L2 cache manually]:size,assoc,line_size'
+  '--LL=-[set LL cache manually]:size,assoc,line_size'
+  '--cache-sim=-[collect cache stats]:enable [yes]:(yes no)'
+  '--branch-sim=-[collect branch prediction stats]:enable [no]:(yes no)'
+  '--cachegrind-out-file=-[specify output file name]:file name [cachegrind.out.%p]:_files'
 )
 
 args_helgrind=(
-  $common
+  $common_own_malloc
   $common_read_varinfo
   '--free-is-write=-[treat heap frees as writes]:enable [no]:(yes no)'
   '--track-lockorders=-[show lock ordering errors]:enable [yes]:(no yes)'
@@ -86,31 +132,68 @@ args_helgrind=(
     approx\:full\ trace\ for\ one\ thread,\ approx\ for\ the\ other\ \(faster\)
     none\:only\ show\ trace\ for\ one\ thread\ in\ a\ race\ \(fastest\)
   ))'
+  '--delta-stacktrace=-[derive a stacktrace from the previous stacktrace]:enable:(yes no)'
   '--conflict-cache-size=-[specify size of full history cache]:size [2000000]'
   '--check-stack-refs=-[race-check reads and writes on the main stack and thread stacks]:enable [yes]:(no yes)'
   '--ignore-thread-creation=-[ignore activities during thread creation]:enable [no]:(yes no)'
 )
 
 args_lackey=(
-  '--fnname=-[count calls to specified name]:name'
-  '--detailed-counts=-[count loads, stores and alu ops]:enable:(yes no)'
+  '--basic-counts=-[count instructions, jumps, etc.]:enable [yes]:(yes no)'
+  '--detailed-counts=-[count loads, stores and alu ops]:enable [no]:(yes no)'
+  '--trace-mem=-[trace all loads and stores]:enable [no]:(yes no)'
+  '--trace-superblocks=-[trace all superblock entries]:enable [no]:(yes no)'
+  '--fnname=-[count calls to specified name]:name [main]'
 )
 
 args_massif=(
-  $common
-  '--heap=-[profile heap blocks]:enable:(yes no)'
-  '--heap-admin=-[specify average admin bytes per heap block]:bytes'
-  '--stacks=-[enable profile stacks]:enable:(yes no)'
-  '--depth=-[depth of contexts]:depth'
-  '--alloc-fn=-[specify alloc function]:function'
-  '--format=-[specify format of textual output]:format:(text html)'
+  $common_own_malloc
+  '--heap=-[profile heap blocks]:enable [yes]:(yes no)'
+  '--heap-admin=-[specify average admin bytes per heap block]:size (bytes) [8]'
+  '--stacks=-[profile stacks]:enable [no]:(yes no)'
+  '--pages-as-heap=-[profile memory at the page level]:enable [no]:(yes no)'
+  '--depth=-[depth of contexts]:depth [30]'
+  '*--alloc-fn=-[specify alloc function]:function'
+  '*--ignore-fn=-[ignore heap allocations within specified function]:function'
+  '--threshold=-[specify significance threshold]:threshold (percentage) [1.0]'
+  '--peak-inaccuracy=-[specify maximum peak inaccuracy]:inaccuracy (percentage) [1.0]'
+  "--time-unit=-[specify time unit]:unit [i]:((
+    i\:instructions\ executed
+    ms\:milliseconds
+    b\:heap\ bytes\ alloc\'d/dealloc\'d
+  ))"
+  '--detailed-freq=-[every Nth snapshot should be detailed]:snapshot interval [10]'
+  '--max-snapshots=-[specofy maximum number of snapshots recorded]:maximum [100]'
+  '--massif-out-file=-[specify output file name]:filename [massif.out.%p]:_files'
+)
+
+args_exp_bbv=(
+  '--bb-out-file=-[specify filename for BBV info]:filename:_files'
+  '--pc-out-file=-[specify filename for BB addresses and function names]:filename:_files'
+  '--interval-size=-[specify interval size]:size (instructions) [100000000]'
+  '--instr-count-only=-[only print total instruction count]:enable:(yes no)'
+)
+
+args_exp_dhat=(
+  '--show-top-n=-[show specified number of the top alloc points]:number [10]'
+  '--sort-by=-[sort the allocation points by specified metric]:metric [max-bytes-live]:((
+    max-bytes-live\:maximum\ live\ bytes
+    tot-bytes-allocd\:bytes\ allocated\ in\ total\ \(turnover\)
+    max-blocks-live\:maximum\ live\ blocks
+    tot-blocks-allocd\:blocks\ allocated\ in\ total\ \(turnover\)
+  ))'
+)
+
+args_exp_sgcheck=(
+  $common_partial
+  '--enable-sg-checks=-[enable stack & global array checking]:enable [yes]:(yes no)'
 )
 
 args_none=(
   $common_mem_null
 )
 
-args="args_${${words[(r)--tool=*]#*=}:-memcheck}"
+args="args_${${${words[(r)--tool=*]#*=}/-/_}:-memcheck}"
 
 _arguments -C ${(P)args} $cmd \
   '(--version)--tool=-[specify valgrind tool]:valgrind tool:->tools' \
@@ -120,27 +203,43 @@ _arguments -C ${(P)args} $cmd \
   '(-q --quiet)'{-q,--quiet}'[run silently; only print error msgs]' \
   '(-v --verbose)'{-v,--verbose}'[be more verbose]' \
   '--trace-children=-[valgrind-ise child processes]:enable:(yes no)' \
+  '--trace-children-skip=-[specify a list of executables not to trace into]:executables' \
+  '--trace-children-skip-by-arg=-[specify a list of executables matched by argv not to trace into]:executables' \
+  '--child-silent-after-fork=-[omit child output between fork & exec]:enable:(yes no)' \
+  '--vgdb=-[activate gdbserver]:enable [yes]:(yes no full)' \
+  '--vgdb-error=-[invoke gdbserver after specified number of errors]:errors [999999999]:errors' \
+  '--vgdb-stop-at=-[invoke gdbserver for given events]:event:_sequence compadd - startup exit valgrindabexit all none' \
   '--track-fds=-[track open file descriptors]:enable:(yes no)' \
   '--time-stamp=-[add timestamps to log messages]:enable:(yes no)' \
   '--log-fd=-[log messages to specified file descriptor]:file descriptor:_file_descriptors' \
   '--log-file=-[log messages to specified file with pid appended]:file:_files' \
-  '--log-file-exactly=-[log messages to specified file]:file:_files' \
-  '--log-file-qualifier=-[log messages to filename given by specified environment variable]:variable:_parameters -g "*scalar*"' \
   '--log-socket=-[log messages to socket]:ipaddr\:port' \
-  '--run-libc-freeres=-[free up glibc memory at exit]:enable:(yes no)' \
-  '--sim-hints=-[enable hint]:hint:(lax-ioctls enable-outer)' \
-  '--show-emwarns=-[show warnings about emulation limits]:enable:(yes no)' \
-  '--kernel-variant=-[handle non-standard kernel variants]:kernel variant:_values -s , kernel\ variant bproc' \
-  '--demangle=-[automatically demangle C++ names]:enable:(yes no)' \
-  '--num-callers=-[specify no of callers to show in stack traces]:number' \
-  '--error-limit=-[stop showing new errors if too many]:enable:(yes no)' \
-  '--show-below-main=-[continue stack traces below main()]:enable:(yes no)' \
-  '--suppressions=-[suppress errors described in specified file]:file:_files' \
-  '--gen-suppressions=-[print suppressions for errors detected]:enable:(yes no)' \
-  '--db-attach=-[start debugger when errors detected]:enable:(yes no)' \
-  '--db-command=-[specify command to start debugger]: : _command_names -e' \
-  '--input-fd=-[specify file descriptor for input]:file descriptor:_file_descriptors' \
-  '--max-stackframe=-[assume stack switch for SP changes larger than specified number of bytes]:bytes' \
+  '*--fullpath-after=-[show full source paths in call stacks]::prefix to remove from paths:_directories' \
+  '--extra-debuginfo-path=-[specify absolute path to search for additional debug symbols]:path:_directories' \
+  '--debuginfo-server=-[specify server to query for debug symbols]:server:_hosts' \
+  "--allow-mismatched-debuginfo=-[accept debuginfo objects that don't match the main object]:enable [no]:(yes no)" \
+  '--smc-check=-[check for self-modifying code]:checks [all-non-file]:(none stack all all-non-file)' \
+  '--read-inline-info=-[read debug info about inlined functions to improve stack traces]:enable:(yes no)' \
+  '--vgdb-poll=-[specify gdbserver poll max]:basic blocks [5000]' \
+  '--vgdb-shadow-registers=-[let gdb see the shadow registers]:enable [yes]:(yes no)' \
+  '--vgdb-prefix=-[specify prefix for bgdb FIFOs]:prefix:_files' \
+  '--run-libc-freeres=-[free up glibc memory at exit]:enable [yes]:(yes no)' \
+  '--run-cxx-freeres=-[free up libstdc++ memory at exit]:enable [yes]:(yes no)' \
+  '--sim-hints=-[activate unusual sim behaviours]:hint [none]:_sequence compadd - lax-ioctls lax-doors fuse-compatible enable-outer no-inner-prefix no-nptl-pthread-stackcache fallback-llsc none' \
+  '--fair-sched=-[schedule threads fairly on multicore systems]:enable [no]:(yes no try)' \
+  '--kernel-variant=-[handle non-standard kernel variants]:kernel variant:_sequence compadd - bproc android-no-hw-tls android-gpu-sgx5xx android-gpu-adreno3xx' \
+  '--merge-recursive-frames=-[merge frames between identical program counters in specified max frames]:frames [0]' \
+  '--num-transtab-sectors=-[specify size of translated code cache]:size (sectors) [32]' \
+  '--avg-transtab-entry-size=-[specify average size of a translated basic block]:size (bytes)' \
+  '--aspace-minaddr=-[avoid mapping memory below address]:address (0xPP) [guessed]' \
+  "--valgrind-stacksize=-[specify size of valgrind (host) thread's stack]:size (bytes) [1048576]" \
+  '--show-emwarns=-[show warnings about emulation limits]:enable [no]:(yes no)' \
+  '*--require-text-symbol=-[abort run if the specified shared object lacks specified symbol]:\:soname pattern\:symbol pattern' \
+  '*--soname-synonyms=-[specify patterns to map sonames to replacements]:soname=replacement' \
+  '--sigill-diagnostics=-[warn about illegal instructions]:enable [yes]:(yes no)' \
+  '--unw-stack-scan-thresh=-[enable stack-scan unwind if fewer than specified number of good frames found]:frames' \
+  '--resync-filter=-[attempt to avoid expensive address-space-resync operations]:enable:(yes no verbose)' \
+  '--max-threads=-[specify maximum number of threads that valgrind can handle]:threads [500]' \
   && return
 
 typeset -a tools
@@ -151,12 +250,10 @@ if [[ -n "$state" ]]; then
   # Basically uses debug output to find out the directory where the tools are
   # present and lists all executables in that directory.
   # Hope the program provides a neater interface some day!
-  () {
-    setopt localoptions histsubstpattern
-    tools=( ${${${(M)${(f)"$(_call_program tools valgrind --tool=something -d 2>&1)"}:#*launcher launching *something*}##*launcher launching }%%something*}*~*.*(*:t:s/-*//) )
-    typeset -U tools
-  }
-  _wanted tools exl 'valgrind tool' compadd $tools && return
+  tools=( ${${${${(M)${(f)"$(_call_program tools $words[1] --tool=something -d 2>&1)"}:#*launcher launching *something*}##*launcher launching }%%something*}:-${commands[valgrind]:h:h}/lib/valgrind/}*~*.*(*:t) )
+  tools=( ${tools%-*-*} )
+  typeset -U tools
+  _wanted tools exl 'valgrind tool' compadd -a tools && return
 fi
 
 return 1
diff --git a/Completion/Unix/Command/_ansible b/Completion/Unix/Command/_ansible
index 330ef66b7..89a4998b7 100644
--- a/Completion/Unix/Command/_ansible
+++ b/Completion/Unix/Command/_ansible
@@ -1,6 +1,6 @@
 #compdef ansible ansible-config ansible-console ansible-doc ansible-galaxy ansible-inventory ansible-playbook ansible-pull ansible-vault
 
-local curcontext="$curcontext" plug plugvar ret=1
+local curcontext="$curcontext" plug plugvar ign ret=1
 local -a args state line
 local -A opt_args
 
@@ -30,7 +30,7 @@ case $service in
       '(-D --diff)'{-D,--diff}'[show differences when changing small files and templates]'
       '(-b --become)'{-b,--become}'[escalate privileges on remote system]'
       '(-f --forks)'{-f+,--forks=}'[specify number of parallel processes to use]:processes [5]'
-      '--become-method=[specify privilege escalation method to use]:method [sudo]:(sesu sudo su pbrun pfexec doas dzdo ksu runas pmrun enable)'
+      '--become-method=[specify privilege escalation method to use]:method [sudo]:(sudo su pbrun pfexec doas dzdo ksu runas pmrun enable machinectl)'
       '--become-user=[specify remote user for running operations]:user:_users'
       "--syntax-check[perform a syntax check on the playbook, but don't execute it]"
       '!(-R --su-user -U --sudo-user)'{-R,-U,--su-user,--sudo-user}':user [root]:_users'
@@ -102,6 +102,7 @@ case $service in
   ;;
   ansible-doc)
     args+=(
+      '!(-l --list -F --list_files -s --snippet)'{-j,--json} # "internal testing only"
       '(-l --list -F --list_files -s --snippet)'{-l,--list}'[list available plugins]'
       '(-l --list -F --list_files -s --snippet)'{-F,--list_files}'[show plugin names and their source files without summaries]'
       '(-l --list -F --list_files -s --snippet)'{-s,--snippet}'[show playbook snippet for specified plugins]'
@@ -143,6 +144,7 @@ case $service in
   ansible-pull)
     args+=(
       "--check[don't make any changes]"
+      '--diff[show the differences in changed files]'
       '(-d --directory)'{-d+,--directory=}'[specify directory to checkout repository to]:directory:_directories'
       '--full[do a full instead of a shallow clone]'
       '(-m --module-name)'{-m+,--module-name=}'[specify repository module used for checking out repository]:module:(git subversion hg bzr)'
@@ -167,9 +169,10 @@ case $service in
   ;;
 esac
 
+(( $#words > 2 )) && ign='!'
 _arguments -s -S -C $args \
-  '(- :)--version[display version information]' \
-  '(- :)'{-h,--help}'[display usage information]' \
+  "${ign}(- :)--version[display version information]" \
+  "${ign}(- :)"{-h,--help}'[display usage information]' \
   \*{-v,--verbose}"[verbose mode (repeat to increase)]" && ret=0
 
 plug=${(v)opt_args[(i)-(t|-type)]:-module}
@@ -220,11 +223,18 @@ case $state in
     fi
   ;;
   galaxy)
+    ign=''
     curcontext="${curcontext%:*}-${line[1]}:"
-    args=()
+    (( $#words > 2 )) && ign='!'
+    args=(
+      "${ign}(-)"{-h,--help}'[display usage information]'
+      '(-c --ignore-certs)'{-c,--ignore-certs}'[ignore SSL certificate validation errors]'
+      '(-s --server)'{-s+,--server=}'[specify API server destination]:server:_hosts'
+      {-v,--verbose}'[verbose mode]'
+    )
     case $line[1] in
       info|search|list|remove|install)
-	args=( '(-p --roles-path)'{-p,--roles-path}'[specify location of roles]:path:_directories' )
+	args+=( '(-p --roles-path)'{-p,--roles-path}'[specify location of roles]:path:_directories' )
       ;|
       info|init)
 	args+=( "--offline[don't query the galaxy API]" )
@@ -241,22 +251,23 @@ case $state in
 	)
       ;;
       setup)
-	args=(
+	args+=(
 	  '--list[list integrations]'
 	  '--remove=[remove integration]:integration id'
 	)
       ;;
       init)
 	args+=(
-	  '--container-enabled[initialize the skeleton role with default contents for a Container Enabled role]'
           '--init-path=[specify path in which the skeleton role will be created]:path:_directories'
           '--role-skeleton=[specify path to a role skeleton that the new role should be based upon]'
+	  '--type=[initialize using an alternate role type]:role type:(container apb network)'
 	)
       ;;
       install)
 	args+=(
 	  '(-n --no-deps)'{-n,--no-deps}"[don’t download roles listed as dependencies]"
 	  '(-i --ignore-errors)'{-i,--ignore-errors}'[ignore errors and continue with the next specified role]'
+	  '(-g --keep-scm-meta)'{-g,--keep-scm-meta}'[use tar instead of the scm archive option when packaging the role]'
 	  '(-r --role-file)'{-r+,--role-file=}'[specify file containing a list of roles to be imported]:file:_files'
         )
       ;;
diff --git a/Completion/Unix/Command/_column b/Completion/Unix/Command/_column
index cb67fef37..a81684dba 100644
--- a/Completion/Unix/Command/_column
+++ b/Completion/Unix/Command/_column
@@ -9,6 +9,7 @@ case $OSTYPE in
   linux-gnu)
     args=(
       '(info json -c --output-width)'{-c+,--output-width=}'[format output to fit display of specified width]:width'
+      '(info)'{-L,--table-empty-lines}"[don't ignore empty lines]"
       + fill
       '(info table text json -x --fillrows)'{-x,--fillrows}'[fill rows before filling columns]'
       + table
diff --git a/Completion/Unix/Command/_dhclient b/Completion/Unix/Command/_dhclient
index beaab5e2d..ee309e1fd 100644
--- a/Completion/Unix/Command/_dhclient
+++ b/Completion/Unix/Command/_dhclient
@@ -22,6 +22,7 @@ case $OSTYPE in
       '-i+[ignore values provided by leases for specified options]:options'
       '-L+[specify file to write option data too]:file:_files'
       "-n[don't configure any interfaces]"
+      '-r[release the current lease back to the server it came from]'
       '-v[verbose log messages]'
     )
   ;;
diff --git a/Completion/Unix/Command/_dmidecode b/Completion/Unix/Command/_dmidecode
index eb273586f..047b74f6d 100644
--- a/Completion/Unix/Command/_dmidecode
+++ b/Completion/Unix/Command/_dmidecode
@@ -4,10 +4,11 @@ _arguments -s \
   '(-d --dev-mem --from-dump)'{-d+,--dev-mem=}'[read memory from specified file]:memory device [/dev/mem]:_files' \
   '(-)'{-h,--help}'[display usage information]' \
   '(-q --quiet -u --dump)'{-q,--quiet}'[be less verbose]' \
-  '(--type -u --dump --dump-bin -s --string)'{-s+,--string=}':DMI string:(bios-vendor bios-version bios-release-date system-manufacturer system-product-name system-version system-serial-number system-uuid baseboard-manufacturer baseboard-product-name baseboard-version baseboard-serial-number baseboard-asset-tag chassis-manufacturer chassis-type chassis-version chassis-serial-number chassis-asset-tag processor-family processor-manufacturer processor-version processor-frequency)' \
-  '(-s --string --dump-bin)*'{-t+,--type=}'[only display entries of specified type]:entry type:(bios system baseboard chassis processor memory cache connector slot)' \
+  '(-t --type -H --handle -u --dump --dump-bin -s --string)'{-s+,--string=}'[only display value of specified DMI string]:DMI string:(bios-vendor bios-version bios-release-date system-manufacturer system-product-name system-version system-serial-number system-uuid baseboard-manufacturer baseboard-product-name baseboard-version baseboard-serial-number baseboard-asset-tag chassis-manufacturer chassis-type chassis-version chassis-serial-number chassis-asset-tag processor-family processor-manufacturer processor-version processor-frequency)' \
+  '(-s --string -H --handle --dump-bin)*'{-t+,--type=}'[only display entries of specified type]:entry type:(bios system baseboard chassis processor memory cache connector slot)' \
+  '(-s --string -t --type -H --handle --dump-bin)'{-H,--handle=}'[only display the entry of specified handle]:handle' \
   '(-q --quiet -u --dump -s --string)'{-u,--dump}"[don't decode entries]" \
-  '--dump-bin=[dump DMI data to a binary file]:file:_files' \
+  '(-s --string -t --type -H --handle)--dump-bin=[dump DMI data to a binary file]:file:_files' \
   '(-d --dev-mem)--from-dump=[read DMI data from a binary file]:file:_files' \
   "--no-sysfs[don't attempt to read DMI data from sysfs files]" \
   '--oem-string=[only display the value of the specified OEM string]:OEM string number' \
diff --git a/Completion/Unix/Command/_jq b/Completion/Unix/Command/_jq
index 4ff05dab4..b8e41dd66 100644
--- a/Completion/Unix/Command/_jq
+++ b/Completion/Unix/Command/_jq
@@ -27,8 +27,11 @@ _arguments -S -s : \
   '(-f --from-file)'{-f,--from-file}'[read filter from file]:_files' \
   '-L+[prepend a directory to the module search path]:_directories' \
   '(-e --exit-status)'{-e,--exit-status}'[report "false" and "null" results via exit code]' \
-  '*--arg[pre-set a variable to a string]: :_guard "|[A-Za-z][A-Za-z0-9]#" "variable name":value (string): ' \
-  '*--argjson[pre-set a variable to an object]: :_guard "|[A-Za-z][A-Za-z0-9]#" "variable name":value (JSON): ' \
-  '*--slurpfile[pre-set a variable to contents of a file]: :_guard "|[A-Za-z][A-Za-z0-9]#" "variable name":value (filename of file containing JSON):_files' \
+  '*--arg[pre-set a variable to a string]:variable name: :value (string)' \
+  '*--argjson[pre-set a variable to an object]:variable name: :value (JSON)' \
+  '*--slurpfile[pre-set a variable to an array of JSON texts read from a file]:variable name: :file:_files' \
+  '*--rawfile[pre-set a variable to the contents of a file]:variable name: :file:_files' \
+  '--args[remaining arguments are string arguments, not files]' \
+  '--jsonargs[remaining arguments are JSON arguments, not files]' \
   "1: :_guard '|[^-]' filter" \
   "*: :_files"
diff --git a/Completion/Unix/Command/_links b/Completion/Unix/Command/_links
index 34bb64560..8bb9fee1c 100644
--- a/Completion/Unix/Command/_links
+++ b/Completion/Unix/Command/_links
@@ -1,30 +1,121 @@
-#compdef links
+#compdef links links2
 
-local curcontext="$curcontext" state line ret=1
+local curcontext="$curcontext" state line ign ret=1
 typeset -A opt_args
 
+(( $#words > 2 )) && ign='!'
 _arguments -C \
-  '(-help)-anonymous[restrict links so that it can run on an anonymous account]' \
-  '(-help)-assume-codepage[specify default codepage to use]:codepage' \
-  '(-help)-async-dns[asynchronous DNS resolver]:bool:((0\:on 1\:off))' \
-  '(-help)-download-dir[default download directory]:_files -/' \
-  '(-help)-driver[graphics driver to use]:graphics driver:->graphics_drivers' \
-  '(-help)-dump[dump the page as pure text]' \
-  '(-help)-format-cache-size[number of formatted document pages cached]:pages' \
-  '(-help)-ftp-proxy[specify ftp proxy server]:proxy:->proxies' \
-  '(-help)-g[run in graphics mode rather than plain text mode]' \
-  '-help[prints the help screen]' \
-  '(-help)-http-proxy[specify web proxy server]:proxy:->proxies' \
-  '(-help)-image-cache-size[image cache memory]:memory (kilobytes)' \
-  '(-help)-max-connections[maximum number of concurrent connections]:connections' \
-  '(-help)-max-connections-to-host[maximum number of concurrent connection to a given host]:connections' \
-  '(-help)-memory-cache-size[cache memory]:kilobytes' \
-  '(-help)-no-connect[runs links as a separate instance]' \
-  '(-help)-receive-timeout[timeout on receive]:timeout (seconds)' \
-  '(-help)-retries[number of retries]:retries' \
-  '(-help)-source[dump the source page]' \
-  '(-help)-unrestartable-receive-timeout[timeout on non restartable connections]:timeout (seconds)' \
-  '(-help)-version[prints the links version number and exit]' \
+  "${ign}-help[prints the help screen]" \
+  "${ign}(- :)-version[prints the links version number and exit]" \
+  "${ign}(- 1)-lookup[do hostname lookup]:hostname:_hosts" \
+  '-g[run in graphics mode rather than plain text mode]' '!-no-g' \
+  '-driver[graphics driver to use]:graphics driver:->graphics_drivers' \
+  '-mode[specify graphics mode]:graphics mode' \
+  '-display[specify X display]:display:_x_display' \
+  '-force-html[treat files with unknown type as html rather than text]' \
+  '-source[dump the source page]' \
+  '-dump[dump the page as pure text]' \
+  '-width[specify screen width for formatting with -dump]:width' \
+  '-codepage[convert output to specified character set with -dump]:codepage' \
+  '-anonymous[restrict links so that it can run on an anonymous account]' \
+  '-no-connect[runs links as a separate instance]' \
+  '-download-dir[default download directory]:_files -/' \
+  '-language[set user interface language]:language' \
+  '-max-connections[specify maximum number of concurrent connections]:connections [10]' \
+  '-max-connections-to-host[maximum number of concurrent connection to a given host]:connections [2]' \
+  '-retries[number of retries]:retries [3]' \
+  '-receive-timeout[timeout on receive]:timeout (seconds) [120]' \
+  '-unrestartable-receive-timeout[timeout on non-restartable connections]:timeout (seconds) [600]' \
+  '-timeout-when-trying-multiple-addresses[specify timeout for connection when trying multiple addresses]:timeout (seconds)' \
+  '-bind-address[use a specific local IP address]:IP address' \
+  '-bind-address-ipv6[use a specific local IPv6 address]:IPv6 address' \
+  "-no-libevent[don't use libevent library]" \
+  "-no-openmp[don't use OpenMP]" \
+  '-async-dns[asynchronous DNS resolver]:enable:((1\:on 0\:off))' \
+  '-download-utime[set time of downloaded files to last modification time reported by server]:enable:((1\:on 0\:off))' \
+  '-format-cache-size[number of formatted document pages cached]:pages [5]' \
+  '-memory-cache-size[cache memory]:size (bytes) [1048576]' \
+  '-image-cache-size[image cache memory]:size (bytes) [1048576]' \
+  '-font-cache-size[specify font cache size]:size (bytes) [2097152]' \
+  "-aggressive-cache[cache everything regardless of server's caching recomendations]:enable [1]:((1\\:on 0\\:off))" \
+  '-address-preference[specify IP version preference]:preference:((
+    0\:system\ default
+    1\:prefer\ IPv4
+    2\:prefer\ IPv6
+    3\:use\ only\ IPv4
+    4\:use\ only\ IPv6
+  ))' \
+  '-http-proxy[specify web proxy server]:proxy:->proxies' \
+  '-ftp-proxy[specify ftp proxy server]:proxy:->proxies' \
+  '-https-proxy[specify https web proxy server]:proxy:->proxies' \
+  '-socks-proxy[specify socks4a proxy server]:proxy:->sproxies' \
+  '-append-text-to-dns-lookups[append text to dns lookups; useful for specifying fixed tor exit node]:text' \
+  '-no-proxy-domains[use no proxy for specified domains]:domain list' \
+  '-only-proxies[only initiate connections via proxy]:enable:((0\:off 1\:on))' \
+  '-ssl.certificates[specify handling of invalid signatures]:handling:((0\:ignore 1\:warn 2\:reject))' \
+  '-ssl.builtin-certificates[specify certificates to use]:certificates:((0\:system 1\:builtin))' \
+  '-ssl.client-cert-key[specify user private key for client certificate authentication]:PEM file:_files' \
+  '-ssl.client-cert-crt[specify user certificate for client certificate authentication]:PEM file:_files' \
+  '-ssl.client-cert-password[specify password for the user private key]:password' \
+  '-http-bugs.http10[specify HTTP version]:protocol [0]:((1\:force\ only\ HTTP\ 1.0 0\:use\ both\ HTTP\ 1.0\ and\ 1.1))' \
+  '-http-bugs.allow-blacklist[use list of servers with broken HTTP/1.1 support]:allow [1]:(1 0)' \
+  '-http-bugs.bug-no-accept-charset[specify sending of Accept-Charset field of HTTP header]:send [0]:(1 0)' \
+  '-http-bugs.no-compression[advertise HTTP compression support]:advertise compression [0]:((0\:yes 1\:no))' \
+  '-http-bugs.retry-internal-errors[retry on internal server errors (50x)]:retry [0]:((1\:yes 0\:no))' \
+  '-http.fake-firefox[fake Firefox in the HTTP header]:enable [0]:((0\:no 1\:yes))' \
+  '-http.do-not-track[send do not track request in the HTTP header]:enable [0]:(1 0)' \
+  "-http.referer[control sending of referer URL in requests]:referer [4]:((
+    0\:don\'t\ send 1\:'send requested URL' 2\:'fake referer' 3\:'send real'
+    4\:'send real only to the same server'
+  ))" \
+  '-http.fake-user-agent[specify fake user agent value]:string' \
+  '-http.extra-header[specify extra string added to HTTP header]:string' \
+  '-ftp.anonymous-password[specify password for anonymous ftp access]:password' \
+  '-ftp.use-passive[use ftp PASV command to bypass firewalls]:enable;(0 1)' \
+  '-ftp.use-eprt-epsv[use EPRT and EPSV commands instead of PORT and PASV]:enable:(0 1)' \
+  '-ftp.set-iptos[set IP type-of-service to high throughput on ftp connections]:enable:(0 1)' \
+  '-smb.allow-hyperlinks-to-smb[allow hyperlinks to SMB protocol]:enable:(0 1)' \
+  '-menu-font-size[specify size of font in menu]:size' \
+  '-menu-background-color[specify menu background color in graphics mode]:color (0xRRGGBB)' \
+  '-menu-foreground-color[specify menu foreground color in graphics mode]:color (0xRRGGBB)' \
+  '-scroll-bar-area-color[set colour of scroll bar area]:colour (0xRRGGBB)' \
+  '-scroll-bar-bar-color[set colour of scroll bar]:colour (0xRRGGBB)' \
+  '-scroll-bar-frame-color[set colour of scroll bar frame]:colour (0xRRGGBB)' \
+  '-bookmarks-file[specify file to store bookmarks]:file:_files' \
+  '-bookmarks-codepage[specify character set of bookmarks file]:character set' \
+  '-save-url-history[save URL history on exit]:enable:(0 1)' \
+  '-display-red-gamma[specify red gamma of display]:gamma [2.2]' \
+  '-display-green-gamma[specify green gamma of display]:gamma [2.2]' \
+  '-display-blue-gamma[specify blue gamma of display]:gamma [2.2]' \
+  '-user-gamma[specify additional gamma]:gamma [1]' \
+  '-bfu-aspect[display aspect ration]' \
+  '-dither-letters[do letter dithering]:enable:(0 1)' \
+  '-display-optimize[optimize for display type]:display:((0\:CRT 1\:LCD\ RGB 2\:LCD\ BGR))' \
+  '-gamma-correction[specify type of gamma correction]:gamma correction:((0\:8-bit 1\:16-bit 2\:auto\ detect))' \
+  '-overwrite-instead-of-scroll[overwrite the screen instead of scrolling it]:enable:(0 1)' \
+  '-html-assume-codepage[specify codepage to use if unspecified by server]:codepage' \
+  '-html-hard-assume[always use character set from -html-assume-codepage]:enable:(0 1)' \
+  '-html-tables[render tables]:enable:(0 1)' \
+  '-html-frames[render frames]:enable:(0 1)' \
+  '-html-images[display links to unnamed images as \[IMG\]]:enable:(0 1)' \
+  '-html-image-names[display filename of an image]:enable:(0 1)' \
+  '-html-display-images[display images in graphics mode]:enable:(0 1)' \
+  '-html-image-scale[sScale images in graphics mode]:scaling (percent)' \
+  '-html-bare-image-autoscale[autoscale images displayed on full screen]:enable:(0 1)' \
+  '-html-numbered-links[number links in text mode allowing quick selection]:enable:(0 1)' \
+  '-html-table-order[set ordering to walk tables]:ordering:((0\:rows 1\:columns))' \
+  '-html-auto-refresh[process refresh or display link]:refresh:(1 0)' \
+  '-html-target-in-new-window[allow opening new windows from html]' \
+  '-html-margin[specify margin]:margin (spaces)' \
+  '-html-user-font-size[specify font size in graphics mode]:size' \
+  '-html-t-text-color[specify text color in text mode]:color (0..15)' \
+  '-html-t-link-color[specify link color in text mode]:color (0..15)' \
+  '-html-t-background-color[specify background color in text mode]:color (0..15)' \
+  '-html-t-ignore-document-color[ignore colors from HTML in text mode]:ignore:(0 1)' \
+  '-html-g-text-color[specify text color in graphics mode]:color (0xRRGGBB)' \
+  '-html-g-link-color[specify link color in graphics mode]:color (0xRRGGBB)' \
+  '-html-g-background-color[specify background color in graphics mode]:color (0xRRGGBB)' \
+  '-html-g-ignore-document-color[ignore colors from HTML in graphics mode]:ignore:(0 1)' \
   ':URL:->html' && ret=0
 
 case $state in
@@ -33,9 +124,15 @@ case $state in
   ;;
   graphics_drivers)
     local -a vals
-    vals=( ${=${${${(f)"$(_call_program links-graphics-drivers links -driver help 2>&1)"}[-1]}//','/''}} )
+    vals=( ${=${${${(f)"$(_call_program links-graphics-drivers $words[1] -driver help 2>&1)"}[-1]}//','/''}} )
     _describe -t links-graphics-drivers 'graphics driver' vals && ret=0
   ;;
+  sproxies)
+    if ! compset -P '*@'; then
+      _message -e users 'user id'
+      return
+    fi
+  ;&
   proxies)
     local suf=-S:
     if compset -P '*:'; then
diff --git a/Completion/Unix/Command/_luarocks b/Completion/Unix/Command/_luarocks
index 363cedc8d..30bda1a9a 100644
--- a/Completion/Unix/Command/_luarocks
+++ b/Completion/Unix/Command/_luarocks
@@ -9,6 +9,7 @@ __luarocks_command(){
     doc:'show documentation for an installed rock'
     download:'download a specific rock file from a rocks server'
     help:'help on commands'
+    init:'initialize a directory for a Lua project using LuaRocks'
     install:'install a rock'
     lint:'check syntax of a rockspec'
     list:'list currently installed rocks'
@@ -20,13 +21,27 @@ __luarocks_command(){
     remove:'uninstall a rock'
     search:'query the LuaRocks servers'
     show:'show information about an installed rock'
+    test:'run the test suite in the current directory'
     unpack:'unpack the contents of a rock'
     upload:'upload a rockspec to the public rocks repository'
+    which:'indicate which file corresponds to a given module name'
     write_rockspec:'write a template for a rockspec file'
   )
   _describe -t commands 'command' commands "$@"
 }
+
 local option_deps_modes='--deps-mode=[specify how to handle dependencies]:mode:__luarocks_deps_modes'
+
+local rockspec_options=(
+  '--license=[specify a license string]:license (e.g. "MIT/X11" or "GNU GPL v3")'
+  '--summary=[a short one-line description summary]:summary:{_message -e "short summary of the rock"}'
+  '--detailed=[a longer description string]:detailed_text:{_message -e "detailed description of the rock"}'
+  '--homepage=[project homepage]:URL:_urls'
+  '--lua-versions=[specify supported Lua versions]:lua version:_sequence compadd - 5.{1,2,3,4}'
+  '--rockspec-format=[rockspec format version, such as "1.0" or "1.1"]:VER: '
+  '--lib=[comma separated list of C library files to link to]:library files'
+)
+
 (( $+functions[__luarocks_deps_modes] )) ||
 __luarocks_deps_modes(){
   local modes=(
@@ -78,10 +93,7 @@ __luarocks_rock_version(){
     i=$(( i + 1 ))
   done
 }
-(( $+functions[__luarocks_lua_versions] )) ||
-__luarocks_lua_versions(){
-  _values -s , 5.3 5.2 5.1
-}
+
 (( $+functions[___luarocks_manually_store_cache_configs_paths] )) ||
 ___luarocks_manually_store_cache_configs_paths(){
   user_config_path="$(_call_program user_config_path luarocks config --user-config)"
@@ -397,6 +409,15 @@ _luarocks_download(){
 _luarocks_help(){
   _arguments '1: :__luarocks_command'
 }
+
+(( $+functions[_luarocks_init] )) ||
+_luarocks_init(){
+  _arguments $rockspec_options \
+    '--reset[regenerate files if they already exist]' \
+    '1: :_guard "^-*" "name"'\
+    '2: :_guard "^-*" "version"'
+}
+
 # arguments:
 # - must: .rockspec file / external rock
 # - optional: version
@@ -453,11 +474,11 @@ _luarocks_pack(){
 # arguments:
 # NOTE: receives only options
 local path_command_options=(
-  '--bin[adds the system path to the output]'
-  '--append[appends the paths to the existing paths]'
-  '--lr-path[exports the Lua path (not formatted as shell command)]'
-  '--lr-cpath[exports the Lua cpath (not formatted as shell command)]'
-  '--lr-bin[exports the system path (not formatted as shell command)]'
+  "--no-bin[don't export the PATH variable]"
+  '--append[append the paths to the existing paths]'
+  '--lr-path[export the Lua path (not formatted as shell command)]'
+  '--lr-cpath[export the Lua cpath (not formatted as shell command)]'
+  '--lr-bin[export the system path (not formatted as shell command)]'
 )
 (( $+functions[_luarocks_path] )) ||
 _luarocks_path(){
@@ -495,13 +516,14 @@ _luarocks_remove(){
 local search_command_options=(
   '--source[return only rockspecs and source rocks]'
   '--binary[return only pure Lua and binary rocks (rocks that can be used with the "install" command without requiring a C toolchain)]'
-  '--all[list all contents of the server that are suitable to this platform, do not filter by name]'
+  "--all[list all contents of the server that are suitable for this platform, don't filter by name]"
+  '--porcelain[produce machine readable output]'
 )
 (( $+functions[_luarocks_search] )) ||
 _luarocks_search(){
   _arguments \
     "${search_command_options[@]}" \
-    '*:SEARCH QUERY:'
+    '*: :_guard "^--*" "search query"'
 }
 # arguments:
 # - must: installed rock
@@ -509,6 +531,8 @@ local show_command_options=(
   '--home[home page of project]'
   '--modules[all modules provided by this package as used by require()]'
   '--deps[packages this package depends on]'
+  '--build-deps[show build-only dependencies for package]'
+  '--test-deps[show dependencies for testing package]'
   '--rockspec[the full path of the rockspec file]'
   '--mversion[the package version]'
   '--rock-tree[local tree where rock is installed]'
@@ -520,6 +544,16 @@ _luarocks_show(){
     "${show_command_options[@]}" \
     "1: :{__luarocks_rock 'installed' "${opt_args[--tree]}"}"
 }
+
+(( $+functions[_luarocks_test] )) ||
+_luarocks_test(){
+  _arguments $option_deps_modes \
+    '--test-type=[specify the test suite type manually]:test suite type' \
+    '--reset[regenerate files if they already exist]' \
+    '1:rockspec:__luarocks_rock' \
+    '*:arg'
+}
+
 # arguments:
 # - must: rockpack file / external rock
 # - optional: version (only when chossing external rock)
@@ -535,8 +569,9 @@ _luarocks_unpack(){
 # arguments:
 # - must: rockspec file
 local upload_command_options=(
-  '--skip-pack[do not pack and send source rock]'
-  '--api-key=[give it an API key]:KEY:{_message "api key"}'
+  "--skip-pack[don't pack and send source rock]"
+  '(--temp-key)--api-key=[use and save specified API key]:api key'
+  '(--api-key)--temp-key=[use specified temporary API key in this invocation only]:api key'
   '--force[replace existing rockspec if the same revision of a module already exists]'
 )
 (( $+functions[_luarocks_upload] )) ||
@@ -545,26 +580,18 @@ _luarocks_upload(){
     "${upload_command_options[@]}" \
     '1: :{__luarocks_rock "rockspec"}'
 }
-# arguments:
-# - optional: name
-# - optional: version
-# - optional: URL / PATH
-# receives as an argument a name and a version with optionally a URL/PATH
-local write_rockspec_command_options=(
-  '--output=[write the rockspec with the given filename]:FILE:_files'
-  '--license=[specify a license string]:license (e.g. "MIT/X11" or "GNU GPL v3")'
-  '--summary=[a short one-line description summary]:summary:{_message -e "short summary of the rock"}'
-  '--detailed=[a longer description string]:detailed_text:{_message -e "detailed description of the rock"}'
-  '--homepage=[project homepage]:URL:_urls'
-  '--lua-version=[supported Lua versions]:LUA_VER:__luarocks_lua_versions'
-  '--rockspec-format=[rockspec format version, such as "1.0" or "1.1"]:VER: '
-  '--tag=[tag to use. Will attempt to extract version number from it]:tag:__git_tag'
-  '--lib=[comma separated list of C library files to link to]:library files'
-)
+
+(( $+functions[_luarocks_which] )) ||
+_luarocks_which(){
+  _message -e modules 'module name'
+}
+
 (( $+functions[_luarocks_write_rockspec] )) ||
 _luarocks_write_rockspec(){
   _arguments -A "-*" \
-    "${write_rockspec_command_options[@]}" \
+    "${rockspec_options[@]}" \
+    '--output=[write the rockspec with the given file]:file:_files' \
+    '--tag=[specify tag to use. Will attempt to extract version number from it]:tag:__git_tag' \
     '1:: :{_message "new rock name"}' \
     '2:: :{__luarocks_rock_version "new_rock"}' \
     '3:: :_urls'
@@ -572,13 +599,15 @@ _luarocks_write_rockspec(){
 
 # The real thing
 _arguments -C \
-  '(--server --only-server)--server=[fetch rocks/rockspecs from this server]:HOST:_hosts' \
-  '(--server --only-server)--only-server=[fetch rocks/rockspecs from this server only]:HOST:_hosts' \
+  '--dev[enable the sub-repositories in rocks servers]' \
+  '(--server --only-server)--server=[fetch rocks/rockspecs from specified server]:host:_hosts' \
+  '(--server --only-server)--only-server=[fetch rocks/rockspecs from specified server only]:host:_hosts' \
   '--only-sources=[restrict downloads to paths matching the given URL]:URL:_urls' \
-  '--tree=[which tree to operate on]:TREE:{_files -/}' \
+  '--lua-dir=[specify location of lua installation]:path:_directories' \
+  '--tree=[specify which tree to operate on]:tree:_directories' \
   '--local[use the tree in the user'"'"'s home directory]' \
   '--verbose[display verbose output of commands executed]' \
-  '--timeout=[timeout on network operations]:SECONDS:{_message "timeout (seconds)"}' \
+  '--timeout=[specify timeout for network operations]:timeout (seconds)' \
   '1: :__luarocks_command' \
   '*::arg:->args'
 
diff --git a/Completion/Unix/Command/_mpc b/Completion/Unix/Command/_mpc
index 4f200c69e..0f292ab4c 100644
--- a/Completion/Unix/Command/_mpc
+++ b/Completion/Unix/Command/_mpc
@@ -55,6 +55,7 @@ _mpc_command() {
     playlist:"print the current playlist"
     prev:"play the previous song in the current playlist"
     prio:"change song priorities in the queue"
+    queued:"show the next queued song"
     random:"toggle random mode, or specify state"
     repeat:"toggle repeat mode, or specify state"
     single:"toggle single mode, or specify state"
@@ -69,6 +70,7 @@ _mpc_command() {
     findadd:"find songs and add them to the current playlist"
     list:"list all tags of given type"
     seek:"seek to the position specified in percent"
+    seekthrough:"seek by an amount of time within the song and playlist"
     shuffle:"shuffle the current playlist"
     stats:"display statistics about MPD"
     stop:"stop the currently playing playlists"
@@ -82,6 +84,8 @@ _mpc_command() {
     waitmessage:"wait for at least one message on the specified channel"
     subscribe:"subscribe to the specified channel and continuously receive messages"
     sticker:"sticker management"
+    mount:"list mounts or add a new mount"
+    unmount:"remove a mount"
   )
 
   if (( CURRENT == 1 )); then
@@ -209,7 +213,11 @@ _mpc_play() {
 }
 
 _mpc_seek() {
-  _message "floating point percent value"
+  _message -e position 'position ([+-][HH:MM:SS]|<0-100>%%)'
+}
+
+_mpc_seekthrough() {
+  _message -e position 'position ([+-][HH:MM:SS])'
 }
 
 _mpc_enable() {
@@ -349,6 +357,7 @@ _arguments -C \
   '(-p --port)'{-p,--port=}'[connect to server port]:port' \
   '(-f --format)'{-f,--format=}'[specify the format of song display]:format string:->formats' \
   '(-w --wait)'{-w,--wait}'[wait for operation to finish (e.g. database update)]' \
+  '(-r --range)'{-r,--range=}'[operate on a range (e.g. when loading a playlist)]:<start>\:<end>' \
   '*::mpc command:_mpc_command' && ret=0
 
 if [[ $state = formats ]]; then
diff --git a/Completion/Unix/Command/_samba b/Completion/Unix/Command/_samba
index 9a2fea9d6..775543794 100644
--- a/Completion/Unix/Command/_samba
+++ b/Completion/Unix/Command/_samba
@@ -55,6 +55,7 @@ case $service in
       '(-t --timeout)'{-t+,--timeout=}'[change the per-operation timeout]:timeout (seconds)'
       '(2 -p --port)'{-p+,--port=}'[specify tcp port]:tcp port'
       '(-g --grepable)'{-g,--grepable}'[produce grepable output]'
+      '(-q --quiet)'{-q,--quiet}'[suppress help message]'
       '(-B --browse)'{-B,--browse}'[browse SMB servers using DNS]'
       '(2 -d --debuglevel)'{-d+,--debuglevel=}'[specify debug level]:debug level:(0 1 2 3 4 5 6 7 8 9 10)'
       '(2 -O --socket-options)'{-O+,--socket-options=}'[specify socket options]:socket options'
diff --git a/Completion/Unix/Command/_script b/Completion/Unix/Command/_script
index dfe57a796..d72a4ee62 100644
--- a/Completion/Unix/Command/_script
+++ b/Completion/Unix/Command/_script
@@ -24,6 +24,7 @@ case $OSTYPE in
       "(-e --return $hlp)"{-e,--return}'[return exit status of the child process]'
       "(-f --flush $hlp)"{-f,--flush}'[flush output after each write]'
       "($hlp)--force[use output file even when it is a link]"
+      '(-o --output-limit)'{-o+,--output-limit=}'[terminate if output files exceed specified size]:size (bytes)'
       "(-q --quiet $hlp)"{-q,--quiet}'[be quiet]'
       "(-t --timing $hlp)"{-t-,--timing=-}'[output timing data]::timing file:_files'
       '(- 1)'{-h,--help}'[display help information]'
diff --git a/Completion/Unix/Command/_ssh b/Completion/Unix/Command/_ssh
index 9c827d655..d1bd8f04b 100644
--- a/Completion/Unix/Command/_ssh
+++ b/Completion/Unix/Command/_ssh
@@ -56,7 +56,7 @@ _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"))' \
+      '-Q+[query parameters]:query option:((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" key-cert\:"certificate key types" key-plain\:"non-certificate key types" protocol-version\:"supported SSH protocol versions" sig\:"supported signature algorithms" help\:"show supported queries"))' \
       '-s[invoke subsystem]' \
       '(-t)-T[disable pseudo-tty allocation]' \
       '(-T)-t[force pseudo-tty allocation]' \
@@ -452,6 +452,7 @@ _ssh () {
                 CanonicalizeHostname \
                 CanonicalizeMaxDots \
                 CanonicalizePermittedCNAMEs \
+                CASignatureAlgorithms \
                 CertificateFile \
                 ChallengeResponseAuthentication \
                 CheckHostIP \
diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index ac459f8ab..4fb2c8ce2 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -303,7 +303,7 @@ _tmux-display-message() {
   _arguments -s -S \
     '-c+[specify target client]:client:__tmux-clients' \
     '-p[print message to stdout]' \
-    '-t+[specify target client]:client:__tmux-clients' \
+    '-t+[specify target pane]:pane:__tmux-panes' \
     '-F+[specify output format]:format:__tmux-formats' \
     ':message'
 }
@@ -808,8 +808,9 @@ _tmux-set-window-option() {
 _tmux-set-hook() {
   [[ -n ${tmux_describe} ]] && print "set a hook to a command" && return
   _arguments -s \
-    '-g[add hook to global list]' \
-    '-u[unset a hook]' \
+    '(-R)-g[add hook to global list]' \
+    '(-g -u)-R[run hook immediately]' \
+    '(-R)-u[unset a hook]' \
     '-t+[specify target session]:session:__tmux-sessions' \
     ':hook name:_tmux_hooks' \
     '*:::command:= _tmux'
@@ -1197,6 +1198,7 @@ __tmux-formats() {
       'pane_tty:pseudo terminal of pane'
       'pane_width:width of pane'
       'pid:server PID'
+      'rectangle_toggle:1 if rectangle selection is activated'
       'scroll_region_lower:bottom of scroll region in pane'
       'scroll_region_upper:top of scroll region in pane'
       'scroll_position:scroll position in copy mode'

^ permalink raw reply	[flat|nested] 8+ messages in thread
* PATCH: completion options update
@ 2018-06-19 22:09 Oliver Kiddle
  0 siblings, 0 replies; 8+ messages in thread
From: Oliver Kiddle @ 2018-06-19 22:09 UTC (permalink / raw)
  To: Zsh workers

This is the latest installment of the usual completion options update
based on -h output comparisons.

Relevant versions are:
ansible		2.5.2
cryptsetup	2.0.3
git		2.18rc1
kpartx		0.7.7
lynx		2.8.9dev.19
mpc		0.30
qiv		2.3.2
eu-readelf	0.172
sqlite		3.24.0 - support for sqlite archives
ss		180608
subversion	1.10  - completing shelves
linux mpstat	11.7.3
linux sar	11.7.3
tmux		2.7
tune2fs		1.44.2
linux usermod	4.6
wget		1.19.5
xxd		1.10
which and zed - complete the -x option

For tmux, select-layout apparently now targets panes rather than
windows. I'm not entirely confident in this corresponding change to
_tmux.

Losing the descriptions for ansible plugins makes it a lot faster to do
completion for ansible-doc. This now checks the verbose style to see if
descriptions are wanted.

I wouldn't normally update for a release candidate as with git here but
it appeared on my system with an update.

Oliver

diff --git a/Completion/Linux/Command/_cryptsetup b/Completion/Linux/Command/_cryptsetup
index ea7152ea1..351859586 100644
--- a/Completion/Linux/Command/_cryptsetup
+++ b/Completion/Linux/Command/_cryptsetup
@@ -33,7 +33,7 @@ _arguments -s \
   '(--use-random)--use-urandom[use /dev/urandom to generate volume key]' \
   '--shared[share device with another non-overlapping crypt segment]' \
   '--uuid=[set device UUID]:uuid' \
-  '--allow-discards[allow discards (aka TRIM) requests for device]' \
+  '--allow-discards[allow discard (aka TRIM) requests for device]' \
   '--header=[device or file with separated LUKS header]:file:_files' \
   '--test-passphrase[do not activate device, just check passphrase]' \
   '--tcrypt-hidden[use hidden header (hidden TCRYPT device)]' \
@@ -64,6 +64,7 @@ _arguments -s \
   '--persistent[set activation flags persistent for device]' \
   '--label=[set label for the LUKS2 device]:label' \
   '--subsystem=[set subsystem label for the LUKS2 device]:subsystem' \
+  '--unbound[create unbound (no assigned data segment) LUKS2 keyslot]' \
   '(- : *)--version[show version information]' \
   '(- : *)'{-\?,--help}'[display help information]' \
   '(- : *)--usage[display brief usage]' \
@@ -86,6 +87,7 @@ case $state in
       'luksAddKey:add a new key'
       'luksRemoveKey:remove a key'
       'luksChangeKey:change a key'
+      'luksConvertKey:convert a key to new pbkdf parameters'
       'luksKillSlot:wipe key from slot'
       'luksUUID:print/change device UUID'
       'isLuks:check if device is a LUKS partition'
@@ -112,7 +114,7 @@ case $state in
       erase|convert|config|repair|(luks(AddKey|Erase|RemoveKey|DelKey|UUID|Dump)|isLuks))
 	args=( $device )
       ;;
-      luks(Format|AddKey|RemoveKey|ChangeKey))
+      luks(Format|AddKey|RemoveKey|ChangeKey|ConvertKey))
 	args=( $device ':key file:_files' )
       ;;
       luksHeader*) args=( $device '--header-backup-file:file:_files' );;
diff --git a/Completion/Linux/Command/_kpartx b/Completion/Linux/Command/_kpartx
index 11c614c01..8f09c416d 100644
--- a/Completion/Linux/Command/_kpartx
+++ b/Completion/Linux/Command/_kpartx
@@ -1,6 +1,6 @@
 #compdef kpartx
 
-_arguments -s -w : \
+_arguments -s -S : \
   '-a[add partition mappings]' \
   '-r[read-only partition mappings]' \
   '-d[delete partition mappings]' \
@@ -9,6 +9,6 @@ _arguments -s -w : \
   '-p[set device name-partition number delimiter]' \
   '-f[force creation of mappings]' \
   '-g[force GUID partition table]' \
-  '-v[Operate verbosely]' \
-  '-s[don'\''t return until the partitions are created]' \
+  '-v[operate verbosely]' \
+  '-n[return before the partitions are created]' '!(-n)-s' \
   '1: : _files'
diff --git a/Completion/Linux/Command/_ss b/Completion/Linux/Command/_ss
index dff289947..b1bfa207c 100644
--- a/Completion/Linux/Command/_ss
+++ b/Completion/Linux/Command/_ss
@@ -18,6 +18,7 @@ _arguments -C -s \
   "($info -m --memory)"{-m,--memory}'[show socket memory usage]' \
   "($info -p --processes)"{-p,--processes}'[show process using each socket]' \
   "($info -i --info)"{-i,--info}'[show internal TCP information]' \
+  "($info)--tipcinfo[show internal tipc socket information]" \
   "($info -s --summary)"{-s,--summary}'[print summary statistics]' \
   "($info -b --bpf)"{-b,--bpf}'[show bpf filter socket information]' \
   "($info -E --events)"{-E,--events}'[continually display sockets as they are destroyed]' \
@@ -33,13 +34,14 @@ _arguments -C -s \
   "($info -d --dccp)"{-d,--dccp}'[display DCCP sockets]' \
   "($info -w --raw)"{-w,--raw}'[display RAW sockets]' \
   "($info -x --unix)"{-x,--unix}'[display Unix domain sockets]' \
+  "($info)--tipc[display only TIPC sockets]" \
   "($info)--vsock[display only vsock sockets]" \
-  "($info -f --family)"{-f,--family}'[display sockets of specified type]:family:(unix inet inet6 link netlink unix vsock)' \
+  "($info -f --family)"{-f+,--family=}'[display sockets of specified type]:family:(unix inet inet6 link netlink unix vsock tipc)' \
   "($info -K --kill)"{-K,--kill}'[forcibly close sockets, display what was closed]' \
   "($info -H --no-header)"{-H,--no-header}'[suppress header line]' \
-  "($info -A --query --socket)"{-A,--query,--socket}'[specify socket tables to show]: :_values -s , socket\ table all inet tcp udp raw unix packet netlink unix_dgram unix_stream unix_seqpacket packet_raw packet_dgram vsock_stream vsock_dgram' \
-  "($info -D)"{-D,--diag=}'[dump raw info to file]:file:_files' \
-  "($info -F)"{-F,--filter=}'[read filter information from a file]:file:_files' \
+  "($info -A --query --socket)"{-A+,--query=,--socket=}'[specify socket tables to show]: :_values -s , socket\ table all inet tcp udp raw unix packet netlink unix_dgram unix_stream unix_seqpacket packet_raw packet_dgram vsock_stream vsock_dgram tipc' \
+  "($info -D)"{-D+,--diag=}'[dump raw info to file]:file:_files' \
+  "($info -F)"{-F+,--filter=}'[read filter information from a file]:file:_files' \
   "($info)*: :->filter" && ret=0
 
 if [[ -n $state ]]; then
diff --git a/Completion/Linux/Command/_sysstat b/Completion/Linux/Command/_sysstat
index 855bf0a70..8b7929ddd 100644
--- a/Completion/Linux/Command/_sysstat
+++ b/Completion/Linux/Command/_sysstat
@@ -9,7 +9,7 @@ _mpstat() {
     '(-A)-N[specify NUMA nodes]:NUMA node' \
     '(-A)-n[report summary CPU statistics based on NUMA node placement]' \
     '-o[display statistics in JSON]:format:(JSON)' \
-    '(-A)-P[specify processor number]:processor: _values -s "," processor ON ALL {0..$(_call_program processors getconf _NPROCESSORS_ONLN)}' \
+    '(-A)-P[specify processor number]:processor: _values -s "," processor ALL {0..$(_call_program processors getconf _NPROCESSORS_ONLN)}' \
     '-u[report CPU utilization]' \
     '(- 1 2)-V[display version information]' \
     '1: : _guard "^-*" interval' \
@@ -85,29 +85,31 @@ _sar() {
     '-F[display statistics for mounted filesystems]' \
     '-f[extract records from file]:record:_files' \
     '-H[report hugepages utilization]' \
-    '-h[display help]' \
+    '(--human -p)-h[make output easier to read: implies --human and -p]' \
+    '(- 1 2)--help[display usage information]' \
     '--human[print sizes in human readable format]' \
     '*-I[report statistics for interrupts]:interrupts: _values -s "," interrupts 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SUM ALL XALL' \
     '-i[select records as close as possible to interval]:interval' \
     '-j[display persistent device names]:type:(ID LABEL PATH UUID)' \
     '-m[report power management statistics]:keywords: _values -s "," keywords CPU FAN FREQ IN TEMP USB ALL' \
-    '-n[report network statistics]:keywords: _values -s "," keywords DEV EDEV NFS NFSD SOCK IP EIP ICMP EICMP TCP ETCP UDP SOCK6 IP6 EIP6 ICMP6 EICMP6 UDP6 ALL' \
+    '-n[report network statistics]:keywords: _values -s "," keywords DEV EDEV NFS NFSD SOCK IP EIP ICMP EICMP TCP ETCP UDP SOCK6 IP6 EIP6 ICMP6 EICMP6 UDP6 FC SOFT ALL' \
     '-o[save readings to file in binary form]:file:_files' \
     '-P[report per-processor statistics]:processor: _values -s "," processors ALL' \
     '-p[pretty-print device names]' \
     '-q[report queue length and load averages]' \
     '-R[report memory statistics]' \
-    '-r[report memory utilization statistics]' \
+    '-r[report memory utilization statistics]:: :(ALL)' \
     '-S[report swap space utilization]' \
     '-s[set starting time of report]:start time (HH\:MM\:SS)' \
     '--sadc[print name of data collector]' \
     '-t[display timestamps in original local time of file creator]' \
-    '-u[report CPU utilization]: :(ALL)' \
+    '-u[report CPU utilization]:: :(ALL)' \
     '(- 1 2)-V[display version information]' \
     '-v[report status of kernel tables]' \
     '-W[report swapping statistics]' \
     '-w[report task creation and system switching activity]' \
     '-y[report TTY device activity]' \
+    '-z[omit output for any devices lacking activity during sample period]' \
     '1: : _guard "^-*" interval' \
     '2: : _guard "^-*" count'
 }
diff --git a/Completion/Linux/Command/_tune2fs b/Completion/Linux/Command/_tune2fs
index af120e279..3d64f266c 100644
--- a/Completion/Linux/Command/_tune2fs
+++ b/Completion/Linux/Command/_tune2fs
@@ -24,7 +24,7 @@ _arguments -s -S \
   '-m+[set the percentage of reserved filesystem blocks]:percentage' \
   '-M+[set the last-mounted directory for the filesystem]:directory:_files -/' \
   '-o+[mount options]:options:_values -s , debug bsdgroups user_xattr acl uid16 journal_data journal_data_ordered journal_data_writeback nobarrier block_validity discard nodelalloc' \
-  '-O+[set or clear filesystem features]: :_values -s , feature dir_index dir_nlink encrypt extentextent extra_isize filetype flex_bg has_journalhuge_file large_file metadata_csum mmp project quota read-only resize_inode sparse_super uninit_bg' \
+  '-O+[set or clear filesystem features]: :_values -s , feature 64bit dir_index dir_nlink ea_inode encrypt extent extra_isize filetype flex_bg has_journal large_dir huge_file large_file metadata_csum metadata_csum_seed mmp project quota read-only resize_inode sparse_super uninit_bg' \
   '-r+[set the number of reserved filesystem blocks]:number' \
   '-Q+[set quota feature on the superblock]: :_values -s , "quota option" usrquota grpquota prjquota' \
   '-s+[set sparse super feature]:state:((0\:off 1\:on))' \
diff --git a/Completion/Unix/Command/_ansible b/Completion/Unix/Command/_ansible
index f05dac8a6..330ef66b7 100644
--- a/Completion/Unix/Command/_ansible
+++ b/Completion/Unix/Command/_ansible
@@ -30,7 +30,7 @@ case $service in
       '(-D --diff)'{-D,--diff}'[show differences when changing small files and templates]'
       '(-b --become)'{-b,--become}'[escalate privileges on remote system]'
       '(-f --forks)'{-f+,--forks=}'[specify number of parallel processes to use]:processes [5]'
-      '--become-method=[specify privilege escalation method to use]:method [sudo]:(sudo su pbrun pfexec doas dzdo ksu runas pmrun)'
+      '--become-method=[specify privilege escalation method to use]:method [sudo]:(sesu sudo su pbrun pfexec doas dzdo ksu runas pmrun enable)'
       '--become-user=[specify remote user for running operations]:user:_users'
       "--syntax-check[perform a syntax check on the playbook, but don't execute it]"
       '!(-R --su-user -U --sudo-user)'{-R,-U,--su-user,--sudo-user}':user [root]:_users'
@@ -39,17 +39,20 @@ case $service in
   ansible|ansible-console|ansible-inventory|ansible-playbook|ansible-pull|ansible-vault)
     args+=(
       '--ask-vault-pass[ask for vault password]'
-      '--new-vault-id=[specify new vault identity to use for rekey]:vault id'
-      '--new-vault-password-file=[specify new vault password file to use for rekey]:file:_files'
       '--vault-id=[specify vault identity to use]:vault identity'
       '--vault-password-file=[specify vault password file]:vault password file:_files'
     )
   ;|
   ansible|ansible-console|ansible-inventory|ansible-playbook|ansible-pull)
     args+=(
-      '--list-hosts[output list of matching hosts]'
-      '(-i --inventory)'{-i+,--inventory=}'[specify inventory host file]:inventory file:_files'
+      '(-i --inventory)'{-i+,--inventory=}'[specify inventory host file or host list]: : _alternative "files\:inventory file\:_files"
+	"hosts\:host\: _sequence _hosts"'
       '!(-i --inventory)--inventory-file=:inventory file:_files'
+    )
+  ;|
+  ansible|ansible-console|ansible-playbook|ansible-pull)
+    args+=(
+      '--list-hosts[output list of matching hosts]'
       '(-l --limit)'{-l+,--limit=}'[further limit hosts to an additional pattern]:host subset:->hosts'
     )
   ;|
@@ -58,21 +61,22 @@ case $service in
       '(-e --extra-vars)'{-e+,--extra-vars=}'[set additional variables]:key=value or YAML/JSON'
     )
   ;|
+  ansible|ansible-console|ansible-inventory)
+    args+=(
+      '--playbook-dir=[specify substitute playbook directory]:directory:_directories'
+    )
+  ;|
   ansible-playbook|ansible-pull)
     args+=(
       '(-t --tags)'{-t,--tags}'[only run plays and tasks tagged with these values]'
       "--skip-tags[only run plays and tasks whose tags don't match]"
     )
   ;|
-  ansible|ansible-pull)
-    args+=(
-      '(-m --module-name)'{-m+,--module-name=}'[specify module]:module:->plugins'
-    )
-  ;|
   ansible)
     args+=(
       '(-a --args)'{-a+,--args=}'[specify command or module arguments]:arguments:->args'
       '(-B --background)'{-B+,--background=}'[run asynchronously, failing after specified time]:fail timeout (seconds)'
+      '(-m --module-name)'{-m+,--module-name=}'[specify module]:module:->plugins'
       '(-o --one-line)'{-o,--one-line}'[condense output]'
       '(-P --poll)'{-P+,--poll=}'[specify the poll interval if using -B]:interval (seconds) [15]'
       '(-t --tree)'{-t+,--tree=}'[specify directory for log output]:directory:_directories'
@@ -98,14 +102,16 @@ case $service in
   ;;
   ansible-doc)
     args+=(
-      '(-l --list)'{-l,--list}'[list available plugins]'
-      '(-s --snippet)'{-s,--snippet}'[show playbook snippet for specified plugins]'
+      '(-l --list -F --list_files -s --snippet)'{-l,--list}'[list available plugins]'
+      '(-l --list -F --list_files -s --snippet)'{-F,--list_files}'[show plugin names and their source files without summaries]'
+      '(-l --list -F --list_files -s --snippet)'{-s,--snippet}'[show playbook snippet for specified plugins]'
       '(-t --type)'{-t+,--type=}'[choose plugin type]:plugin type [module]:(cache callback connection inventory lookup module strategy vars)'
       '*:plugin:->plugins'
     )
   ;;
   ansible-inventory)
     args+=(
+      '--export[when doing an --list, represent in a way that is optimized for export]'
       '(-y --yaml)--graph[output inventory graph]'
       '--host[output specific host information]'
       '--list[output all hosts information]'
@@ -125,7 +131,7 @@ case $service in
   ;;
   ansible-playbook)
     args+=(
-      '--flush-cache[clear the fact cache]'
+      '--flush-cache[clear the fact cache for every host in inventory]'
       '--force-handlers[run handlers even if a task fails]'
       '--list-tags[list all available tags]'
       '--list-tasks[list all tasks that would be executed]'
@@ -139,6 +145,7 @@ case $service in
       "--check[don't make any changes]"
       '(-d --directory)'{-d+,--directory=}'[specify directory to checkout repository to]:directory:_directories'
       '--full[do a full instead of a shallow clone]'
+      '(-m --module-name)'{-m+,--module-name=}'[specify repository module used for checking out repository]:module:(git subversion hg bzr)'
       '--accept-host-key[adds the hostkey for the repo url if not already added]'
       '--purge[purge checkout after playbook run]'
       '(-f --force)'{-f,--force}'[run the playbook even if the repository could not be updated]'
@@ -153,6 +160,8 @@ case $service in
   ;;
   ansible-vault)
     args=( -A "-*" $args
+      '--new-vault-id=[specify new vault identity to use for rekey]:vault id'
+      '--new-vault-password-file=[specify new vault password file to use for rekey]:file:_files'
       '*::args:->vault'
     )
   ;;
@@ -200,9 +209,15 @@ case $state in
   plugins)
     plugvar=_ansible_${plug}_plugins
     typeset -ga ${plug}
-    (( ${(P)#plugvar} )) || set -A ${plugvar} \
-        ${${(f)"$(_call_program plugins ansible-doc -t $plug -l)"}/ ##/:}
-    _describe -t plugins "${plug} plugin" $plugvar && ret=0
+    if zstyle -T ":completion:${curcontext}:plugins" verbose; then
+      (( ${(P)#plugvar} )) || set -A ${plugvar} \
+	  ${${(f)"$(_call_program plugins ansible-doc -t $plug -l)"}/ ##/:}
+      _describe -t plugins "${plug} plugin" $plugvar && ret=0
+    else
+      (( ${(P)#plugvar} )) || set -A ${plugvar} \
+	  ${${(f)"$(_call_program plugins ansible-doc -t $plug -F)"}%% *}
+      _wanted plugins expl "${plug} plugin" compadd -a $plugvar && ret=0
+    fi
   ;;
   galaxy)
     curcontext="${curcontext%:*}-${line[1]}:"
@@ -265,6 +280,11 @@ case $state in
     curcontext="${curcontext%:*}-${line[1]}:"
     args=()
     case $line[1] in
+      encrypt*|edit|rekey)
+	args+=(
+	  '--encrypt-vault-id=[specify vault id to use to encrypt (required if more than one vault-id is provided)]:vault id'
+	)
+      ;|
       (de|en)crypt*) args=( '--output=[specify output file name]:file:_files' ) ;|
       encrypt_string)
 	args+=(
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index b92a320df..38b872ea0 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -871,6 +871,7 @@ _git-fetch () {
     '(-n --no-tags -t --tags)'{-n,--no-tags}'[disable automatic tag following]' \
     '(--all -m --multiple)'{-m,--multiple}'[fetch from multiple remotes]' \
     '(-P --prune-tags)'{-P,--prune-tags}'[prune local tags no longer on remote and clobber changed tags]' \
+    \*{-o+,--server-option=}'[send specified string to the server when using protocol version 2]:option' \
     '--filter=[object filtering]:filter:_git_rev-list_filters' \
     '*:: :->repository-or-group-or-refspec' && ret=0
 
@@ -959,9 +960,10 @@ _git-gc () {
   _arguments -S -s \
     '--aggressive[more aggressively optimize]' \
     '--auto[check whether housekeeping is required]' \
-    '(        --no-prune)--prune=[prune loose objects older than given date]: :__git_datetimes' \
+    '(        --no-prune)--prune=-[prune loose objects older than given date]::date [2 weeks ago]:__git_datetimes' \
     '(--prune           )--no-prune[do not prune any loose objects]' \
-    '(-q --quiet)'{-q,--quiet}'[suppress progress reporting]'
+    '(-q --quiet)'{-q,--quiet}'[suppress progress reporting]' \
+    '--keep-largest-pack[repack all other packs except the largest pack]' \
 }
 
 (( $+functions[_git-grep] )) ||
@@ -1768,7 +1770,10 @@ _git-status () {
     '--ignored=-[show ignored files as well]:mode [traditional]:(traditional matching no)' \
     '(-z --null --column --no-column)'{-z,--null}'[use NUL termination on output]' \
     '(--no-column -z --null)--column=-[display in columns]::column.status option:((always\:"always show in columns" never\:"never show in columns" auto\:"show in columns if the output is to the terminal" column\:"fill columns before rows (default)" row\:"fill rows before columns" plain\:"show in one column" dense\:"make unequal size columns to utilize more space" nodense\:"make equal size columns"))' \
-    '(--column)--no-column[do not display in columns]' \
+    "(--column)--no-column[don't display in columns]" \
+    "(--no-renames -M --find-renames)--no-renames[don't detect renames]" \
+    '(--no-renames -M --find-renames)-M[detect renames]' \
+    '(--no-renames -M --find-renames)--find-renames=-[detect renames, optionally set similarity index]::similarity' \
     '*: :__git_ignore_line_inside_arguments _files'
 }
 
@@ -2155,16 +2160,18 @@ _git-config () {
     '(--global --system         -f --file --blob)--local[use local config file]' \
     '(--global --system --local           --blob)'{-f+,--file=}'[use given config file]:config file:_files' \
     '(--global --system --local -f --file)--blob=[read config from given blob object]:blob:__git_blobs' \
-    '(       --int --bool-or-int --path --expiry-date)--bool[setting is a boolean]' \
-    '(--bool       --bool-or-int --path --expiry-date)--int[setting is an integer]' \
-    '(--bool --int               --path --expiry-date)--bool-or-int[setting is an integer]' \
-    '(--bool --int --bool-or-int        --expiry-date)--path[setting is a path]' \
-    '(--bool --int --bool-or-int --path              )--expiry-date[setting is an expiry date]' \
+    '(-t --type --bool --int --bool-or-int --path --expiry-date)'{-t+,--type=}'[ensure that incoming and outgoing values are canonicalize-able as the given type]:type:(bool int bool-or-int path expiry-date color)' \
+    '(-t --type --int --bool-or-int --path --expiry-date)--bool[setting is a boolean]' \
+    '(-t --type --bool --bool-or-int --path --expiry-date)--int[setting is an integer]' \
+    '(-t --type --bool --int --path --expiry-date)--bool-or-int[setting is an integer]' \
+    '(-t --type --bool --int --bool-or-int --expiry-date)--path[setting is a path]' \
+    '(-t --type --bool --int --bool-or-int --path)--expiry-date[setting is an expiry date]' \
     '(-z --null)'{-z,--null}'[end values with NUL and newline between key and value]' \
     '(--get --get-all --get-urlmatch --replace-all --add --unset --unset-all --rename-section --remove-section -e --edit --get-color --get-colorbool)--name-only[show variable names only]' \
     '(--includes)'--no-includes"[don't respect \"include.*\" directives]" \
     '(--no-includes)'--includes'[respect "include.*" directives in config files when looking up values]' \
     '(--global --system --local -f --file --blob --get-urlmatch --replace-all --add --unset --unset-all --rename-section --remove-section -e --edit --get-color --get-colorbool)--show-origin[show origin of config]' \
+    '(2 --add -e --edit -l --list --name-only --rename-section --remove-section --replace-all --unset --unset-all)--default=[with --get, use specified default value when entry is missing]:default' \
     $name_arg \
     $value_arg \
     '::value regex' \
@@ -3708,11 +3715,17 @@ _git-replace () {
     '(: * --raw -f --force)'{-l,--list}'[list replace refs]:pattern' \
     {-d,--delete}'[delete existing replace refs]:*:replacement:__git_objects' \
     '(* 2 --format)'{-e,--edit}'[edit existing object and replace it with the new one]' \
-    '(--raw --format)'{-g,--graft}'[rewrite the parents of a commit]'
+    '(--raw --format)'{-g,--graft}'[rewrite the parents of a commit]' \
+    '--convert-graft-file[convert existing graft file]'
 }
 
 # Ancillary Commands (Interrogators)
 
+(( $+functions[_git-annotate] )) ||
+_git-annotate() {
+  _git-blame "$@"
+}
+
 (( $+functions[_git-blame] )) ||
 _git-blame () {
   local curcontext=$curcontext state line ret=1
@@ -3744,6 +3757,8 @@ _git-blame () {
     '(-n --show-number)'{-n,--show-number}'[show the line number in the original commit]' \
     '-s[suppress author name and timestamp]' \
     '-w[ignore whitespace when finding lines]' \
+    '(--color-by-age)--color-lines[color redundant metadata from previous line differently]' \
+    '(--color-lines)--color-by-age[color lines by age]' \
     '--indent-heuristic[use indent-based heuristic to improve diffs]' \
     $revision_options \
     ':: :__git_revisions' \
@@ -3831,10 +3846,11 @@ _git-get-tar-commit-id () {
 _git-help () {
   _arguments -S -s \
     '(         -g --guides -i --info -m --man -w --web)'{-a,--all}'[show all available commands]' \
-    '(-a --all -g --guides           -m --man -w --web)'{-i,--info}'[show all available commands]' \
-    '(-a --all -g --guides -i --info          -w --web)'{-m,--man}'[show all available commands]' \
-    '(-a --all -g --guides -i --info -m --man         )'{-w,--web}'[show all available commands]' \
+    '(-a --all -g --guides           -m --man -w --web)'{-i,--info}'[display manual for the command in info format]' \
+    '(-a --all -g --guides -i --info          -w --web)'{-m,--man}'[display manual for the command in man format]' \
+    '(-a --all -g --guides -i --info -m --man         )'{-w,--web}'[display manual for the command in HTML format]' \
     '(-g --guides)'{-g,--guides}'[prints a list of useful guides on the standard output]' \
+    '(-v --verbose)'{-v,--verbose}'[print command descriptions]' \
     ': : _alternative commands:command:_git_commands "guides:git guides:(attributes glossary ignore modules revisions tutorial workflows)"'
 }
 
@@ -4703,6 +4719,7 @@ _git-pack-objects () {
     $thin_opt \
     '--shallow[create packs suitable for shallow fetches]' \
     '--honor-pack-keep[ignore objects in local pack with .keep file]' \
+    '--keep-pack=[ignore named pack]:pack' \
     '--compression=-[specify compression level]: :__git_compression_levels' \
     '--keep-true-parents[pack parents hidden by grafts]' \
     '--use-bitmap-index[use a bitmap index if available to speed up counting objects]' \
@@ -5037,7 +5054,9 @@ _git-ls-remote () {
     "--refs[don't show peeled tags]" \
     '--exit-code[exit with status 2 when no matching refs are found in the remote repository]' \
     '--get-url[expand the URL of the given repository taking into account any "url.<base>.insteadOf" config setting]' \
+    '*--sort=[specify field name to sort on]:field:__git_ref_sort_keys' \
     '--symref[show underlying ref in addition to the object pointed by it]' \
+    \*{-o+,--server-option=}'[send specified string to the server when using protocol version 2]:option' \
     ': :__git_any_repositories' \
     '*: :__git_references'
 }
@@ -6407,7 +6426,7 @@ __git_heads () {
 
 (( $+functions[__git_heads_local] )) ||
 __git_heads_local () {
-  local gitdir
+  local f gitdir
   declare -a heads
 
   heads=(${(f)"$(_call_program headrefs git for-each-ref --format='"%(refname:short)"' refs/heads 2>/dev/null)"})
@@ -7742,8 +7761,8 @@ _git() {
       '(: -)--man-path[print the manpath for the man pages for this version of Git and exit]' \
       '(: -)--info-path[print the path where the info files are installed and exit]' \
       '(: -)--html-path[display path to HTML documentation and exit]' \
-      '(-p --paginate)'{-p,--paginate}'[pipe output into $PAGER]' \
-      '--no-pager[do not pipe git output into a pager]' \
+      '(-p --paginate -P --no-pager)'{-p,--paginate}'[pipe output into a pager]' \
+      '(-p --paginate -P --no-pager)'{-P,--no-pager}"[don't pipe git output into a pager]" \
       '--git-dir=-[path to repository]: :_directories' \
       '--work-tree=-[path to working tree]: :_directories' \
       '--namespace=-[set the Git namespace]: :_directories' \
diff --git a/Completion/Unix/Command/_lynx b/Completion/Unix/Command/_lynx
index 6c4d57f6f..d25b03975 100644
--- a/Completion/Unix/Command/_lynx
+++ b/Completion/Unix/Command/_lynx
@@ -1,7 +1,5 @@
 #compdef lynx
 
-# Lynx Version 2.8.7rel.1 (05 Jul 2009)
-
 local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
@@ -26,7 +24,9 @@ _arguments -C \
   '-cmd_log=[log keystroke commands to the given file]:keystroke log:_files' \
   '-cmd_script=[read keystroke commands from the given file (see -cmd_log)]:keystroke log:_files' \
   '-color[forces color mode on, if available]' \
-  '-connect_timeout=[set the N-second connection timeout (18000)]:connection timeout (seconds):' \
+  '-collapse_br_tags[toggle collapsing of BR tags (on)]' \
+  '-connect_timeout=[set the N-second connection timeout]:connection timeout (seconds) [18000]' \
+  '-convert_to=[convert input]:format:_mime_types' \
   '-cookie_file=[specifies a file to use to read cookies]:cookie file:_files' \
   '-cookie_save_file=[specifies a file to use to store cookies]:cookie file:_files' \
   '-cookies[toggles handling of Set-Cookie headers (on)]' \
@@ -34,7 +34,8 @@ _arguments -C \
   '-crawl[with -traversal, output each page to a file with -dump, format output as with -traversal, but to stdout]' \
   '-curses_pads[uses curses pad feature to support left/right shifting (on)]' \
   '-debug_partial[incremental display stages with MessageSecs delay (off)]' \
-  '-delay=[set NNN-second delay at statusline message (0.000)]:delay (seconds):' \
+  '-default_colors[use terminal default foreground/background colors (on)]' \
+  '-delay=[set NNN-second delay at statusline message]:delay (seconds) [0.000]' \
   "-display=[set the display variable for X exec'ed programs]:display:_x_display" \
   '-display_charset=[charset for the terminal output]:character set:' \
   "-dont_wrap_pre[inhibit wrapping of text in <pre> when -dump'ing and -crawl'ing, mark wrapped lines in interactive session (off)]" \
@@ -47,7 +48,7 @@ _arguments -C \
   '-fileversions[include all versions of files in local VMS directory listings]' \
   '-force_empty_hrefless_a[force HREF-less 'A' elements to be empty (close them as soon as they are seen) (off)]' \
   '-force_html[forces the first document to be interpreted as HTML (off)]' \
-  '-force_secure[toggles forms-based vs old-style options menu (on)]' \
+  '-force_secure[toggle forcing of the secure flag for SSL cookies (off)]' \
   '-forms_options[toggles forms-based vs old-style options menu (on)]' \
   '-from[toggle transmission of From headers (on)]' \
   '-ftp[disable ftp access (off)]' \
@@ -57,11 +58,13 @@ _arguments -C \
   '-hiddenlinks=[hidden links: options are merge, listonly, or ignore]:option:(merge listonly ignore)' \
   "-historical[toggles use of '>' or '-->' as terminator for comments (off)]" \
   '-homepage=[set homepage separate from start page]:URL:->html' \
+  '-html5_charsets[toggle use of HTML5 charset replacements]' \
   '-image_links[toggles inclusion of links for all images (off)]' \
   '-index=[set the default index file to URL]:URL:->html' \
   '-ismap[toggles inclusion of ISMAP links when client-side MAPs are present (off)]' \
   '-justify[do justification of text (off)]' \
   '-link=[starting count for lnk#.dat files produced by -crawl (0)]:starting count:' \
+  '-list_inline[with -dump, show links inline with text]' \
   '-listonly[with -dump, forces it to show only the list of links (off)]' \
   '-localhost[disable URLs that point to remote hosts (off)]' \
   '-locexec[enable local program execution from local files only (if lynx was compiled with local execution enabled)]' \
@@ -91,6 +94,7 @@ _arguments -C \
   '-nostatus[disable the miscellaneous information messages (off)]' \
   '-notitle[disable the title at the top of each page (off)]' \
   '-nounderline[disable underline video-attribute]' \
+  "-nozap=[disable checks for the 'z' key]:duration:(all initially full)" \
   '-number_fields[force numbering of links as well as form input fields (off)]' \
   '-number_links[force numbering of links (off)]' \
   '-partial[toggles display partial pages while downloading (on)]' \
@@ -105,7 +109,7 @@ _arguments -C \
   '-pseudo_inlines[toggles pseudo-ALTs for inlines with no ALT string (on)]' \
   '-raw[toggles default setting of 8-bit character translations or CJK mode for the startup character set (off)]' \
   '-realm[restricts access to URLs in the starting realm (off)]' \
-  '-read_timeout=[set the N-second read-timeout (18000)]:timeout (seconds):' \
+  '-read_timeout=[set the N-second read-timeout]:timeout (seconds) [18000]' \
   '-reload[flushes the cache on a proxy server (only the first document affected) (off)]' \
   '-restrictions=[use -restrictions to see list]:options:->restrictions' \
   '-resubmit_posts[toggles forced resubmissions (no-cache) of forms with method POST when the documents they returned are sought with the PREV_DOC command or from the History List (off)]' \
@@ -113,6 +117,9 @@ _arguments -C \
   '-scrollbar[toggles showing scrollbar (off)]' \
   '-scrollbar_arrow[toggles showing arrows at ends of the scrollbar (on)]' \
   '-selective[require .www_browsable files to browse directories]' \
+  '-session=[resume from specified file on startup and save session to it on exit]:session file:_files' \
+  '-sessionin=[resume session from specified file on startup]:session file:_files' \
+  '-sessionout=[save session to specified file on exit]:session file:_files' \
   '-short_url[enables examination of beginning and end of long URL in status line (off)]' \
   "-show_cfg[show 'LYNX.CFG' setting (off)]" \
   '-show_cursor[toggles hiding of the cursor in the lower right corner (on)]' \
@@ -131,16 +138,18 @@ _arguments -C \
   '-trace[turns on Lynx trace mode (off)]' \
   '-trace_mask=[customize Lynx trace mode]:trace mask:(0 1 2 3 4 5 6 7)' \
   '-traversal[traverse all http links derived from startfile]' \
+  '-trim_blank_lines[toggle trimming of leading/trailing/collapsed-br blank lines (on)]' \
   '-trim_input_fields[trim input text/textarea fields in forms (off)]' \
   '-underline_links[toggles use of underline/bold attribute for links (off)]' \
   '-underscore[toggles use of _underline_ format in dumps (off)]' \
+  '-unique_urls[toggle use of unique-urls setting for -dump and -listonly options (off)]' \
   '-use_mouse[turn on mouse support (off)]' \
   '-useragent=[set alternate Lynx User-Agent header]:user-agent header:' \
   '-validate[accept only http URLs (meant for validation) implies more restrictions than -anonymous, but goto is allowed for http and https (off)]' \
   '-verbose[toggles [LINK\], [IMAGE\] and [INLINE\] comments with filenames of these images (on)]' \
   '(- *)-version[print Lynx version information]' \
   '-vikeys[enable vi-like key movement (off)]' \
-  '-width=[screen width for formatting of dumps (default is 80)]:number of columns:' \
+  '-width=[specify screen width for formatting of dumps]:number of columns [80]' \
   '-with_backspaces[emit backspaces in output if -dumping or -crawling]' \
   '-xhtml-parsing[enable XHTML 1.0 parsing (off)]' \
   ':URL:->html' && ret=0
@@ -148,12 +157,12 @@ _arguments -C \
 case "$state" in
 restrictions)
   _values -s ',' 'restriction' \
-    \? all bookmark bookmark_exec change_exec_perms chdir default \
-    dired_support disk_save dotfiles download editor exec exec_frozen \
+    \? all bookmark bookmark_exec change_exec_perms chdir compileopts_info \
+    default dired_support disk_save dotfiles download editor exec exec_frozen \
     externals file_url goto inside_ftp inside_news inside_rlogin \
-    inside_telnet jump lynx_cgi mail multibook news_post options_save \
-    outside_ftp outside_news outside_rlogin outside_telnet print shell \
-    suspend telnet_port useragent && return
+    inside_telnet jump lynxcfg_info lynxcfg_xinfo lynxcgi mail multibook \
+    news_post options_save outside_ftp outside_news outside_rlogin \
+    outside_telnet print shell suspend telnet_port useragent && return
   ;;
 html)
   _alternative 'files:file:_files -g "*.x#html#(-.)"' 'urls:URL:_urls' && return
diff --git a/Completion/Unix/Command/_mpc b/Completion/Unix/Command/_mpc
index 45d93550d..4f200c69e 100644
--- a/Completion/Unix/Command/_mpc
+++ b/Completion/Unix/Command/_mpc
@@ -37,6 +37,7 @@ _mpc_command() {
     disable:"disable an output"
     enable:"enable an output"
     toggleoutput:"toggle an output"
+    outputset:"set output attributes"
     idle:"wait until an event occurs"
     idleloop:"loop waiting for events"
     insert:"insert a song after the currently playing song in the playlist"
@@ -73,6 +74,7 @@ _mpc_command() {
     stop:"stop the currently playing playlists"
     toggle:"toggles Play/Pause, plays if stopped"
     update:"scan music directory for updates"
+    rescan:"rescan music directory (including unchanged files)"
     version:"report version of MPD"
     volume:"set volume"
     status:"display MPD status"
@@ -222,6 +224,16 @@ _mpc_toggleoutput() {
   _mpc_helper_outputs
 }
 
+_mpc_outputset() {
+  if (( CURRENT == 2 )); then
+    _mpc_helper_outputs
+  else
+    _values -w -S = attribute \
+      'dop:setting:(1 0)' \
+      'allowed_formats:formats'
+  fi
+}
+
 _mpc_move() {
   if (( $#words <= 3 )); then
     _mpc_helper_songnumbers
@@ -318,6 +330,10 @@ _mpc_update() {
   _mpc_helper_files
 }
 
+_mpc_rescan() {
+  _mpc_helper_files
+}
+
 if [[ $service = *MPD_HOST* ]]; then
   _hosts
   return
@@ -339,7 +355,7 @@ if [[ $state = formats ]]; then
   compset -P '([^%]|%[^%]#%)#'
   _wanted metadata expl 'metadata delimiter' compadd -p % -S % \
     artist album albumartist comment composer date disc genre performer title \
-    track time file position mtime mdate && ret=0
+    track time file position id prio mtime mdate && ret=0
 fi
 
 return ret
diff --git a/Completion/Unix/Command/_readelf b/Completion/Unix/Command/_readelf
index 282431462..ce78baf27 100644
--- a/Completion/Unix/Command/_readelf
+++ b/Completion/Unix/Command/_readelf
@@ -7,6 +7,7 @@ _pick_variant -r variant elftoolchain=elftoolchain elfutils=elfutils binutils --
 
 args=(
   '(-a --all)'{-a,--all}'[show all tables]'
+  '(-g --section-groups)'{-g,--section-groups}'[show section groups]'
   '(-h --file-header)'{-h,--file-header}'[show file header]'
   '(-l --program-headers --segments)'{-l,--program-headers,--segments}'[show program headers]'
   '(-S --section-headers --sections)'{-S,--section-headers,--sections}'[show sections header]'
@@ -31,7 +32,6 @@ args=(
 case $variant in
   elftoolchain|binutils)
     args+=(
-      '(-g --section-groups)'{-g,--section-groups}'[show section groups]'
       '(-t --section-details)'{-t,--section-details}'[show section details]'
       '(-e --headers)'{-e,--headers}'[show file, program and sections headers]'
       '(-s --syms --symbols)'{-s,--syms,--symbols}'[show symbol table]'
@@ -49,6 +49,7 @@ case $variant in
   ;;
   elfutils)
     args+=(
+      '--dwarf-skeleton=[find skeleton compile units (with -w)]:file:_files'
       '--elf-section[used specified section as ELF input data]::section'
       '(-e --exception)'{-e,--exception}'[show sections for exception handling]'
       '(-N --numeric-addresses)'{-N,--numeric-addresses}"[don't find symbol names for addresses in DWARF data]"
diff --git a/Completion/Unix/Command/_sqlite b/Completion/Unix/Command/_sqlite
index 58f7a9116..4604fb40c 100644
--- a/Completion/Unix/Command/_sqlite
+++ b/Completion/Unix/Command/_sqlite
@@ -1,6 +1,6 @@
 #compdef sqlite sqlite3
 
-local ret opt display_opt sqlite3
+local opt display_opt sqlite3 ign
 local -a options output_modes exclusive dashes
 
 [[ $service = sqlite3 ]] && sqlite3=true || unset sqlite3
@@ -31,16 +31,18 @@ for display_opt in $output_modes ; do
   options+=( "($exclusive)"$^dashes"-${opt}[set output mode to $display_opt]" )
 done
 
+(( $#words == 2 )) || ign='!'
 options+=(
   $^dashes'-separator[set output field separator]:output field separator [|]'
   $^dashes'-nullvalue[set text string for null values]:string'
-  '(- :)'$^dashes'-version[show SQLite version]'
-  '(- :)'$^dashes'-help[show help]'
+  "$ign(- :)"$^dashes'-version[show SQLite version]'
+  "$ign(- :)"$^dashes'-help[show help]'
   '1:SQLite database file:_files'
-  '(- :)2:SQL to run'
+  '(- :)2: :_guard "^-*" "SQL to run"'
 )
 
 (( $+sqlite3 )) && options+=(
+  $^dashes'-A+[run .archive with arguments and exit]'
   $^dashes'-append[append the database to the end of the file]'
   $^dashes'-bail[stop after hitting an error]'
   $^dashes'-cmd[run specified command before reading stdin]:sqlite meta-command'
@@ -53,6 +55,23 @@ options+=(
   $^dashes'-readonly[open the database read-only]'
   $^dashes'-stats[print memory stats before each finalize]'
   $^dashes'-vfs[use specified default VFS]:vfs:(unix-dotfile unix-excl unix-none unix-namedsem)'
+  $^dashes'-zip[open the file as a ZIP Archive]'
 )
 
+if [[ -n $words[(r)-A*] ]]; then
+  options=( -s -w : '(-A --A)'${^dashes}-A "(-f --file -a --append)"${(M)options:#1:*}
+    '(-v --verbose)'{-v,--verbose}'[print each filename as it is processed]'
+    '(1 -a --append -f --file)'{-f+,--file=}'[specify archive file]:archive file:_files'
+    '(1 -a --append -f --file)'{-a,--append=}'[operate on specified file opened using the apndvfs VFS]:archive file:_files'
+    '(-C --directory)'{-C+,--directory=}'[change to specified directory to read/extract files]:directory:_directories'
+    '(-n --dryrun)'{-n,--dryrun}'[show the SQL that would have occurred]'
+    '*:file:_files'
+    + '(commands)' \
+    '(-c --create)'{-c,--create}'[create a new archive]'
+    '(-u --update)'{-u,--update}'[update or add files to an existing archive]'
+    '(-t --list)'{-t,--list}'[list contents of archive]'
+    '(-x --extract)'{-x,--extract}'[extract files from archive]'
+  )
+fi
+
 _arguments $options
diff --git a/Completion/Unix/Command/_subversion b/Completion/Unix/Command/_subversion
index b7e10c06b..e16be7e59 100644
--- a/Completion/Unix/Command/_subversion
+++ b/Completion/Unix/Command/_subversion
@@ -26,7 +26,7 @@ _svn () {
 
   _arguments -C -A "-*" \
     '(-)--help[print help information]' \
-    '(- *)--version[print client version information]' \
+    '(*)--version[print client version information]' \
     '1: :->cmds' \
     '*:: :->args' && ret=0
 
@@ -169,6 +169,9 @@ _svn () {
               '*:file:_files -g "(.svn|*)(/e:_svn_deletedfiles:,e:_svn_status:)"'
             )
           ;;
+	  (unshelve)
+	    args+=( '1:shelf name:compadd - ${${(f)"$(_call_program shelves svn unshelve -q --list)"}%%      *}' )
+	  ;;
           (*)
             case $usage in
               *(SRC|DST|TARGET|URL*PATH)*)
diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index f7b1bbb20..ac459f8ab 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -234,6 +234,7 @@ _tmux-choose-client() {
 _tmux-choose-tree() {
   [[ -n ${tmux_describe} ]] && print "put a window into tree choice mode" && return
   _arguments -s \
+    '-G[include all sessions in any session groups in the tree rather than only the first]' \
     '-N[start without the preview]' \
     '-F+[specify format for each list item]:format:__tmux-formats' \
     '-f+[filter items]:filter format:__tmux-formats' \
@@ -561,6 +562,8 @@ _tmux-paste-buffer() {
 _tmux-pipe-pane() {
   [[ -n ${tmux_describe} ]] && print "pipe output from a pane to a shell command" && return
   _arguments -s -A "-*" -S \
+    '-I[write stdout from command to the pane as if it were typed]' \
+    '-O[pipe output from the pane to the command (default unless -I used)]' \
     '-o[only open a pipe if none is currently opened]' \
     '-t+[specify target pane]:pane:__tmux-panes' \
     ':shell command:_cmdstring'
@@ -657,12 +660,13 @@ _tmux-save-buffer() {
 }
 
 _tmux-select-layout() {
-  [[ -n ${tmux_describe} ]] && print "choose a layout for a window" && return
+  [[ -n ${tmux_describe} ]] && print "choose a layout for a pane" && return
   _arguments -s -A "-*" -S \
+    '-E[spread the current pane and any panes next to it out evenly]' \
     '-n[behave like next-layout]' \
     '-o[revert to previous layout]' \
     '-p[behave like previous-layout]' \
-    '-t+[specify a target window]:target window:__tmux-windows' \
+    '-t+[specify a target pane]:target pane:__tmux-panes' \
     ':layout:(even-horizontal even-vertical main-horizontal main-vertical tiled)'
 }
 
diff --git a/Completion/Unix/Command/_user_admin b/Completion/Unix/Command/_user_admin
index 7eeec7e9b..fe28c13f5 100644
--- a/Completion/Unix/Command/_user_admin
+++ b/Completion/Unix/Command/_user_admin
@@ -150,6 +150,7 @@ case ${service%???}:${(M)service%???}:$OSTYPE in
   *:*:linux*)
     args+=(
       '(-R --root)'{-R,--root=}'[specify directory to chroot into]:directory:_directories'
+      '(-P --prefix)'{-P,--prefix=}"[specify root directory to apply changes in but don't chroot]:directory:_directories"
       '(-D -U -L -p --password)'{-p+,--password=}'[specify encrypted password]:encrypted password'
       '(-)'{-h,--help}'[display help information]'
     )
diff --git a/Completion/Unix/Command/_wget b/Completion/Unix/Command/_wget
index 1a7e2d0a3..2a4e722d8 100644
--- a/Completion/Unix/Command/_wget
+++ b/Completion/Unix/Command/_wget
@@ -22,6 +22,7 @@ _arguments -C -s \
   '(--config)--no-config' '--rejected-log=:file:_files' \
   '(--tries -t)'{--tries=,-t+}'[set number of retries]:number of retries' \
   '--retry-connrefused[retry even if connection is refused]' \
+  '--retry-on-http-error=[specify list of HTTP errors to retry]:http error' \
   '(--output-document -O)'{--output-document=,-O+}'[specify file to write documents to]:output file:_files' \
   '(--continue -c)'{--continue,-c}'[continue getting an existing file]'  \
   '--start-pos=:offset' '--show-progress' \
@@ -38,8 +39,7 @@ _arguments -C -s \
   '(--wait -w)'{--wait=,-w+}'[specify wait between retrievals]:time (seconds)' \
   '(--random-wait)--waitretry=:time (seconds)' \
   '(--waitretry)--random-wait[random wait time between retrievals]' \
-  '(--proxy -Y --no-proxy)'{--proxy=,-Y+}'[explicitly turn on proxy]' \
-  '(--proxy -Y --no-proxy)--no-proxy[explicitly turn off proxy]' \
+  '--no-proxy[explicitly turn off proxy]' \
   '(--quota -Q)'{--quota=,-Q+}'[set retrieval quota]:number' \
   '--bind-address=[specify address to bind to (hostname or IP)]:bind address:_bind_addresses' \
   '--limit-rate=[specify limit to download rate]:download rate limit' \
@@ -48,7 +48,7 @@ _arguments -C -s \
   '--ignore-case[ignore case when matching files/directories]' \
   '(-4 --inet4-only -6 --inet6-only)'{-4,--inet4-only}'[connect only to IPv4 addresses]' \
   '(-4 --inet4-only -6 --inet6-only)'{-6,--inet6-only}'[connect only to IPv6 addresses]' \
-  '--prefer-family[connect first to addresses of specified family]:address family:(IPv6 IPv4 none)' \
+  '--prefer-family=[connect first to addresses of specified family]:address family:(IPv6 IPv4 none)' \
   '(--http-user --ftp-user)--user[set both ftp and http user]:user' \
   '(--http-password --ftp-password)--password[set both ftp and http password]:password' \
   '(--password --http-password --ftp-password)--ask-password:[prompt for passwords]' \
@@ -67,7 +67,7 @@ _arguments -C -s \
   '(--user)--http-user=:user' \
   '(--password --ask-password)--http-password=:password' \
   '--no-cache[disallow server-cached data]' \
-  '--default-page=[specify default page name, normally index.html]' \
+  '--default-page=[specify default page name, normally index.html]:default page [index.html]' \
   '(--adjust-extension -E)'{--adjust-extension,-E}'[save all HTML/CSS documents with proper extensions]' \
   "--ignore-length[ignore \`Content-Length' header field]" \
   '*--header=[send a custom HTTP header]:header:->header' \
@@ -93,7 +93,7 @@ _arguments -C -s \
   "--auth-no-challenge[send basic HTTP authentication without first waiting for server's challenge]" \
   '--secure-protocol=[choose secure protocol]:protocol:(SSLv2 SSLv3 TLSv1 TLSv1_1 TLSv1_2 PFS)' \
   --https-only \
-  "--no-check-certificate=[don't check the server certificate]" \
+  "--no-check-certificate[don't check the server certificate]" \
   '--certificate=[specify client certificate]:client certificate file:_files' \
   '--certificate-type=[specify client certificate type]:certificate type:(PEM DER)' \
   '--private-key=[specify private key file]:key file:_files' \
@@ -104,6 +104,7 @@ _arguments -C -s \
   '--pinnedpubkey=:file:_files' \
   '--random-file[specify file with random data for seeding generator]:file:_files' \
   '--egd-file=[specify filename of EGD socket]:file:_files' \
+  '--ciphers=[set the priority string (GnuTLS) or cipher list string (OpenSSL) directly]:string' \
   '--no-hsts[disable HSTS]' \
   '--hsts-file[specify path of HSTS database]:file:_files' \
   '(--user)--ftp-user=:user' \
diff --git a/Completion/Unix/Command/_xxd b/Completion/Unix/Command/_xxd
index 1b1613a64..0034be519 100644
--- a/Completion/Unix/Command/_xxd
+++ b/Completion/Unix/Command/_xxd
@@ -26,7 +26,7 @@ arguments=(
   '(         -E -EBCDIC -i -include -p -postscript -plain -ps -r -revert              )'{-E,-EBCDIC}'[print human-readable part in EBCDIC rather than ASCII]'
   '(-i -include -p -postscript -plain -ps -r -revert)'{-e,-endian}'[little-endian dump]'
   '(-b -bits -E -EBCDIC -i -include -p -postscript -plain -ps -r -revert              )'{-i,-include}'[output in C include file style]'
-  '(-b -bits -E -EBCDIC -i -include -p -postscript -plain -ps                         )'{-p,-postscript,-plain,-ps}'[read or write a plain hexdump (no line numbers or ASCII rendering)]'
+  '(-b -bits -E -EBCDIC -i -include -p -postscript -plain -ps -C -capitalize          )'{-p,-postscript,-plain,-ps}'[read or write a plain hexdump (no line numbers or ASCII rendering)]'
 
   '(-b -bits -E -EBCDIC -i -include                           -r -revert -u -uppercase)'{-r,-revert}'[reverse mode\: read a hex dump and output binary data]'
   '(-b -bits                                                  -r -revert -u -uppercase)'{-u,-uppercase}'[output upper-case hex digits]'
@@ -34,7 +34,7 @@ arguments=(
   '(- :)'{-h,-help}'[display usage message]'
   '(- :)'{-v,-version}'[show program version]'
   '*'{-a,-autoskip}"[a single '*' replaces runs of NUL (toggleable)]"
-
+  '(-C -capitalize)'{-C,-capitalize}'[capitalize variable names in C include file style]'
   {-c+,-cols}'[specify number of octets per line]: :_guard "[0-9a-fA-Fx]#" "number of octets per line"'
   {-g+,-groupsize}'[specify the number of octets per group]: :_guard "[0-9]#" "number of octets per group"'
   {-l+,-len}'[specify number of octets to output]: :_guard "[0-9]#" "number of octets to output"'
diff --git a/Completion/X/Command/_qiv b/Completion/X/Command/_qiv
index d10407584..35ceec09a 100644
--- a/Completion/X/Command/_qiv
+++ b/Completion/X/Command/_qiv
@@ -5,7 +5,9 @@ _arguments -s \
   '(- *)'{-v,--version}'[display version information]' \
   '--display:display:_x_display' \
   \*{-F,--file}'[read file names from file]:file:_files' \
+  '(-B --browse)'{-B,--browse}'[scan directory of file for browsing]' \
   '(-e --center)'{-e,--center}'[disable window centering]' \
+  '(-C --cycle)'{-C,--cycle}"[don't cycle after last image]" \
   '(-w --fixed_width -W --fixed_zoom)'{-w,--fixed_width}'[use window with specified width]:width' \
   '(-w --fixed_width -W --fixed_zoom)'{-W,--fixed_zoom}'[use window with specified zoom factor]:zoom (percentage)' \
   '(-x -y -z --root --root_t --root_s -f --file *)'{-x,--root}'[use image as the current desktop background, centered]:image file:_files' \
@@ -13,6 +15,7 @@ _arguments -s \
   '(-x -y -z --root --root_t --root_s -f --file *)'{-z,--root_s}'[use image as the current desktop background, stretched]:image file:_files' \
   '(-m --maxpect)'{-m,--maxpect}'[expand image to fit screen size]' \
   '(-t --scale_down)'{-t,--scale_down}'[shrink images to fit screen size]' \
+  "--trashbin[move files to user's trash bin instead of .qiv-trash when deleting]" \
   '(-b --brightness)'{-b,--brightness}'[set brightness]:brightness (-32..32)' \
   '(-c --contrast)'{-c,--contrast}'[set contrast]:contrast (-32..32)' \
   '(-g --gamma)'{-g,--gamma}'[set gamma]:gamma (-32..32)' \
@@ -21,7 +24,7 @@ _arguments -s \
   '(-i --no_statusbar -I --statusbar)'{-I,--statusbar}'[enable statusbar]' \
   '(-p --transparency)'{-p,--transparency}'[enable transparency]' \
   '(-a --do_grab)'{-a,--do_grab}'[grab the pointer in windowed mode]' \
-  '(-G --disable_grab)'{-G,--disable_grab}'[disable pointer grabbing]' \
+  '(-G --disable_grab)'{-G,--disable_grab}'[disable pointer grabbing in fullscreen mode]' \
   '(-o --bg_color)'{-o,--bg_color}'[set root background color]:color:_x_color' \
   '(-s --slide)'{-s,--slide}'[start slideshow immediately]' \
   '(-r --random)'{-r,--random}'[shuffle images for slideshow]' \
@@ -31,6 +34,17 @@ _arguments -s \
   '(-f --fullscreen)'{-f,--fullscreen}'[use fullscreen window on startup]' \
   '(-P --ignore_path_sort)'{-P,--ignore_path_sort}'[sort images by just the filename]' \
   '(-M --merged_case_sort)'{-M,--merged_case_sort}'[sort images case-insensitively]' \
-  '(-N --numeric_sort)'{-N,--numeric_sort}'[numeric image sort]' \
+  '(-K --mtime_sort)'{-K,--mtime_sort}'[sort images by their modification time]' \
+  '(-N --numeric_sort -K --mtime_sort)'{-N,--numeric_sort}'[numeric image sort]' \
+  '(-D --no_sort -N --numeric_sort -K --mtime_sort -M --merged_case_sort -P --ignore_path_sort)'{-D,--no_sort}"[don't apply any sorting to the images]" \
   '(-T --watch)'{-T,--watch}'[reload the image if it changes]' \
-  '*:image file:_files -g "*.(#i)(bmp|eim|gif|jp([eg]|eg)|pcx|png|p[pngb]m|tif(|f)|tga|x[pb]m)(-.)"'
+  '(-u --recursivedir)'{-u,--recursivedir}'[recursively include all files]' \
+  '(-L --followlinks)'{-L,--followlinks}'[follow symlinks to directories]' \
+  '(-A --select_dir)'{-A,--select_dir}'[store selected files in specified directory]:directory [.qiv-select]:_directories' \
+  '(-l --autorotate)'{-l,--autorotate}"[don't autorotate JPEGs according to EXIF rotation tag]" \
+  '(-q --rotate)'{-q,--rotate}'[rotate image]:angle:((1\:90 2\:180 3\:270))' \
+  '(-X --xineramascreen)'{-X,--xineramascreen}'[specify preferred screen]:screen' \
+  '(-Y --source_profile)'{-Y,--source_profile}'[specify colour profile file as source profile]:colour profile file:_files' \
+  '(-Z --display_profile)'{-Z,--display_profile}'[specify colour profile file as display profile]:colour profile file:_files' \
+  '--vikeys[enable movement with h/j/k/l]' \
+  '*:image file:_files -g "*.(#i)(bmp|eim|gif|ico|jp([eg]|eg)|pcx|png|p[pngb]m|pjpeg|svg|tif(|f)|wmf|x[pb]m)(-.)"'
diff --git a/Completion/Zsh/Command/_which b/Completion/Zsh/Command/_which
index c43704ae8..9b789c86b 100644
--- a/Completion/Zsh/Command/_which
+++ b/Completion/Zsh/Command/_which
@@ -1,6 +1,6 @@
 #compdef which whence where type
 
-local farg aarg cargs args state line curcontext="$curcontext" ret=1
+local farg aarg xarg cargs args state line curcontext="$curcontext" ret=1
 
 cargs=( \
   '(-v -c)-w[print command type]' \
@@ -11,6 +11,7 @@ cargs=( \
   '*:commands:->command' )
 farg='-f[output contents of functions]'
 aarg='-a[print all occurrences in path]'
+xarg='-x+[specify spaces to use for indentation in function expansion]:spaces'
 
 case ${service} in
   whence)
@@ -19,8 +20,8 @@ case ${service} in
       '(-v -w)-c[csh-like output]' \
       "${cargs[@]}" "$farg" "$aarg" && ret=0
   ;;
-  where) _arguments -C -s -A "-*" -S "${cargs[@]}" && ret=0;;
-  which) _arguments -C -s -A "-*" -S "${cargs[@]}" "$aarg" && ret=0;;
+  where) _arguments -C -s -A "-*" -S "${cargs[@]}" "$xarg" && ret=0;;
+  which) _arguments -C -s -A "-*" -S "${cargs[@]}" "$aarg" "$xarg" && ret=0;;
   type) _arguments -C -s -A "-*" -S "${cargs[@]}" "$aarg" "$farg" && ret=0;;
 esac
 
diff --git a/Completion/Zsh/Command/_zed b/Completion/Zsh/Command/_zed
index 211dae7df..6b68fadf0 100644
--- a/Completion/Zsh/Command/_zed
+++ b/Completion/Zsh/Command/_zed
@@ -5,5 +5,6 @@ case $service in
 (zed) _arguments -S : \
 	'(- 2):file:_files' \
 	'(1):shell function:_functions' \
+	'(1)-x+[specify spaces to use for indentation in function expansion]:spaces' \
 	'(1)-f[edit function]';;
 esac


^ permalink raw reply	[flat|nested] 8+ messages in thread
* PATCH: completion options update
@ 2018-03-30 22:37 Oliver Kiddle
  0 siblings, 0 replies; 8+ messages in thread
From: Oliver Kiddle @ 2018-03-30 22:37 UTC (permalink / raw)
  To: Zsh workers

This is the latest installment of the usual completion options update
based on -h output comparisons.

Relevant versions are:
ethtool 4.15
ss 180129
TH arping 2.15
mosh 1.3.2
mpc 0.29
notmuch 0.26
GNU objdump/readelf/strip 2.30
prove 3.42
rsync 3.1.3
ruby 2.5
vim  8.0 + latest patches
evince 3.28.0

Oliver

diff --git a/Completion/Linux/Command/_ethtool b/Completion/Linux/Command/_ethtool
index 7c62fd7f7..52b8f0451 100644
--- a/Completion/Linux/Command/_ethtool
+++ b/Completion/Linux/Command/_ethtool
@@ -45,7 +45,10 @@ _arguments -C \
   '--show-eee[show EEE settings]' \
   '--set-eee[set EEE settings]' \
   '--set-phy-tunable[set PHY tunable]' \
-  '--get-phy-tunable[get PHY tunable]' && return
+  '--get-phy-tunable[get PHY tunable]' \
+  '--reset[reset hardware components]' \
+  '--show-fec[query device for forward error correction support]' \
+  '--set-fec[configure forward error correction for device]' && return
 
 if [[ -n $state ]]; then
   case $words[CURRENT-1] in
@@ -132,6 +135,12 @@ if [[ -n $state ]]; then
   hfunc)
     _message -e functions expl 'hash function'
   ;;
+  flags)
+    _message -e masks expl mask
+  ;;
+  encoding)
+    _wanted encodings expl encoding compadd auto off rs baser
+  ;;
   *)
     case $words[2] in
     -A|--pause)
@@ -143,7 +152,7 @@ if [[ -n $state ]]; then
     -C|--coalesce)
       _wanted settings expl 'coalescing setting' compadd -F line -M 'r:|-=* r:|=*' - \
         adaptive-{r,t}x {r,t}x-{usecs,frames}{,-irq,-high,-low} \
-        stats-block-usecs pkt-rate-{low,high} sample-interval dmac
+        stats-block-usecs pkt-rate-{low,high} sample-interval
     ;;
     -G|--set-ring)
       _values -S ' ' -w 'ring parameter' \
@@ -268,6 +277,13 @@ if [[ -n $state ]]; then
     --get-phy-tunable)
       _wanted options expl tunable compadd downshift
     ;;
+    --reset)
+      _wanted components expl component compadd flags dedicated all \
+          {mgmt,irq,dma,filter,offload,mac,phy,ram,ap}{,-shared}
+    ;;
+    --set-fec)
+      _wanted options expl tunable compadd -F line - encoding
+    ;;
     esac
   ;;
   esac
diff --git a/Completion/Linux/Command/_ss b/Completion/Linux/Command/_ss
index e5289b0a7..afe00b6a3 100644
--- a/Completion/Linux/Command/_ss
+++ b/Completion/Linux/Command/_ss
@@ -33,10 +33,11 @@ _arguments -C -s \
   "($info -d --dccp)"{-d,--dccp}'[display DCCP sockets]' \
   "($info -w --raw)"{-w,--raw}'[display RAW sockets]' \
   "($info -x --unix)"{-x,--unix}'[display Unix domain sockets]' \
-  "($info -f --family)"{-f,--family}'[display sockets of specified type]:family:(unix inet inet6 link netlink unix)' \
+  "($info)--vsock[display only vsock sockets]' \
+  "($info -f --family)"{-f,--family}'[display sockets of specified type]:family:(unix inet inet6 link netlink unix vsock)' \
   "($info -K --kill)"{-K,--kill}'[forcibly close sockets, display what was closed]' \
   "($info -H --no-header)"{-H,--no-header}'[suppress header line]' \
-  "($info -A --query --socket)"{-A,--query,--socket}'[specify socket tables to show]: :_values -s , socket\ table all inet tcp udp raw unix packet netlink unix_dgram unix_stream unix_seqpacket packet_raw packet_dgram' \
+  "($info -A --query --socket)"{-A,--query,--socket}'[specify socket tables to show]: :_values -s , socket\ table all inet tcp udp raw unix packet netlink unix_dgram unix_stream unix_seqpacket packet_raw packet_dgram vsock_stream vsock_dgram' \
   "($info -D)"{-D,--diag=}'[dump raw info to file]:file:_files' \
   "($info -F)"{-F,--filter=}'[read filter information from a file]:file:_files' \
   "($info)*: :->filter" && ret=0
@@ -78,7 +79,7 @@ if [[ -n $state ]]; then
   state|exclude)
     _wanted states expl state compadd -M 'm:{a-zA-Z_}={A-Za-z-}' \
       ESTABLISHED SYN-SENT SYN-RECV FIN-WAIT-1 FIN-WAIT-2 TIME-WAIT \
-      CLOSED CLOSE-WAIT LAST-ACK LISTEN CLOSING \
+      CLOSED CLOSE-WAIT LAST-ACK LISTENING CLOSING \
       all connected synchronized bucket big && ret=0
   ;;
   *)
diff --git a/Completion/Unix/Command/_arping b/Completion/Unix/Command/_arping
index bd9bc8ccc..66ce7bc18 100644
--- a/Completion/Unix/Command/_arping
+++ b/Completion/Unix/Command/_arping
@@ -29,6 +29,7 @@ _arguments -s -S  -A "-*" \
   '-D[display answers as exclamation marks and missing packets as dots]' \
   '-e[like -a but beep when there is no reply]' \
   "-F[don't try to be smart about the interface name]" \
+  '-g+[specify group to setgid() to]:group [nobody]:_groups' \
   '-m+[specify type of timestamp for incoming packets]:timestamp type' \
   '(:)-B[255.255.255.255]' \
   '-0[source 0.0.0.0]' \
@@ -36,6 +37,7 @@ _arguments -s -S  -A "-*" \
   '-S+[set source IP]:source IP address:_hosts' \
   '-T+[target IP]:target IP address:_hosts' \
   '-p[turn on promiscuous mode]' \
+  '-Q+[specify 802.1p priority to set]:priority [0]' \
   '-s[set source MAC address]:source MAC address' \
   '-t[set target MAC address]:target MAC address' \
   '-c[send this many requests]:count' \
@@ -45,7 +47,8 @@ _arguments -s -S  -A "-*" \
   '-P[send ARP replies instead of requests]' \
   '-u[show index=received/sent instead of just index=received when pinging MACs]' \
   '-U[send unsolicited ARP]' \
-  '-w+[specify time to wait between pings (ms)]:time (ms)' \
+  '-V+[specify VLAN tag to set]:vlan' \
+  '-w+[specify time to wait between pings (microseconds)]:time (microseconds)' \
   '-W+[specify time to wait between pings (seconds)]:time (seconds)' \
   '(-B):address:_hosts'
  
diff --git a/Completion/Unix/Command/_mosh b/Completion/Unix/Command/_mosh
index aa97587bb..7d1250320 100644
--- a/Completion/Unix/Command/_mosh
+++ b/Completion/Unix/Command/_mosh
@@ -12,8 +12,15 @@ _arguments -C \
   '(-a -n)--predict=[control speculative local echo]:mode:(adaptive always never)' \
   '(--predict -n)-a[synonym for --predict=always]' \
   '(--predict -a)-n[synonym for --predict=never]' \
+  '(--family -6)-4[use IPv4 only]' \
+  '(--family -4)-6[use IPv6 only]' \
+  '(-4 -6)--family=[specify address family]:family [prefer-inet]:(inet inet6 auto all prefer-inet prefer-inet6)' \
+  '--bind-server=[ask the server to reply from an IP address]:{ssh|any|IP}' \
   '--server[specify command to run server helper]:remote file:_files' \
   '--client[specify command to run client helper]:_command_names -e' \
+  "--no-ssh-pty[don't allocate a pseudo tty on ssh connection]" \
+  '--local[run mosh-server locally without using ssh]' \
+  '--experimental-remote-ip=[select method for discovering remote IP address to use for mosh]:method:(local remote proxy)' \
   '1:remote host name:->userhost' \
   '*:::args:_normal' && ret=0
 
diff --git a/Completion/Unix/Command/_mpc b/Completion/Unix/Command/_mpc
index fee5e06f4..45d93550d 100644
--- a/Completion/Unix/Command/_mpc
+++ b/Completion/Unix/Command/_mpc
@@ -53,6 +53,7 @@ _mpc_command() {
     play:"start playing"
     playlist:"print the current playlist"
     prev:"play the previous song in the current playlist"
+    prio:"change song priorities in the queue"
     random:"toggle random mode, or specify state"
     repeat:"toggle repeat mode, or specify state"
     single:"toggle single mode, or specify state"
diff --git a/Completion/Unix/Command/_notmuch b/Completion/Unix/Command/_notmuch
index d6cc58deb..6174d2c00 100644
--- a/Completion/Unix/Command/_notmuch
+++ b/Completion/Unix/Command/_notmuch
@@ -6,12 +6,16 @@ _notmuch_commands()
   notmuch_commands=(
     'setup:interactively set up notmuch for first use'
     'new:find and import any new message to the database'
+    'insert:add a new message into the maildir and notmuch database'
     'search:search for messages matching the search terms, display matching threads as results'
+    'address:get addresses from messages matching the given search terms'
     'reply:constructs a reply template for a set of messages'
     'show:show all messages matching the search terms'
     'tag:add or remove tags for all messages matching the search terms'
     'dump:creates a plain-text dump of the tags of each message'
     'restore:restores the tags from the given file'
+    'compact:compact the notmuch database'
+    'reindex:re-index all messages matching the search terms'
     'help:show details on a command'
     'compact:compact the notmuch database'
     'config:access the notmuch configuration file'
@@ -30,7 +34,9 @@ _notmuch_help_topics()
 {
   local -a notmuch_help_topics
   notmuch_help_topics=(
-    'search-terms:show common search-terms syntax'
+    'search-terms:common search-term syntax'
+    'hooks:hooks that will be run before or after certain commands'
+    'properties:message property conventions and documentation'
   )
   _describe -t notmuch-help-topics 'topic' notmuch_help_topics
 }
diff --git a/Completion/Unix/Command/_objdump b/Completion/Unix/Command/_objdump
index 8b0653267..ee2f3ea6f 100644
--- a/Completion/Unix/Command/_objdump
+++ b/Completion/Unix/Command/_objdump
@@ -1,6 +1,6 @@
 #compdef objdump eu-objdump llvm-objdump
 
-local opts args files variant curcontext=$context state state_descr line
+local opts args files variant curcontext=$context state state_descr line ret=1
 typeset -A opt_args
 
 files='*:object file:_object_files'
@@ -148,23 +148,23 @@ case $variant in
   ;;
 esac
 
-_arguments $opts -C : "$args[@]" $files && return 0
+_arguments $opts -C : "$args[@]" $files && ret=0
 
 case "$state" in
   short_dwarf_names)
-    _values -s "" "dwarf section" "l[rawline]" "L[decodedline]" "i[info]" "a[abbrev]" "p[pubnames]" "r[aranges]" "m[macro]" "f[frames]" "F[frames-interp]" "s[str]" "o[loc]" "R[Ranges]" "t[pubtypes]"
+    _values -s "" "dwarf section" "l[rawline]" "L[decodedline]" "i[info]" "a[abbrev]" "p[pubnames]" "r[aranges]" "m[macro]" "f[frames]" "F[frames-interp]" "s[str]" "o[loc]" "R[Ranges]" "t[pubtypes]" "U[trace_info]" "u[trace_abbrev]" "g[gdb_index]" "T[trace_aranges]" "A[addr]" "c[cu_index]" "k[links]" "K[follow-links]" && ret=0
   ;;
   dwarf_names)
-    _values -s , "dwarf section" rawline decodedline info abbrev pubnames aranges macro frames frames-interp str loc Ranges pubtypes gdb_index trace_info trace_abbrev trace_aranges addr cu_index
+    _values -s , "dwarf section" rawline decodedline info abbrev pubnames aranges macro frames frames-interp str loc Ranges pubtypes gdb_index trace_info trace_abbrev trace_aranges addr cu_index links follow-links && ret=0
   ;;
   bfdname)
-    _values "object format" "${(z)${(@M)${(f)$(_call_program targets objdump --help)}##* supported targets:*}##*: }"
+    _values "object format" "${(z)${(@M)${(f)$(_call_program targets objdump --help)}##* supported targets:*}##*: }" && ret=0
   ;;
   machine)
-    _values "machine architecture" "${(@)${(z)${(@M)${(f)$(_call_program targets objdump --help)}##* supported architectures:*}##*: }//:/\\:}"
+    _values "machine architecture" "${(@)${(z)${(@M)${(f)$(_call_program targets objdump --help)}##* supported architectures:*}##*: }//:/\\:}" && ret=0
   ;;
   disassembler_options)
-    _values -s , "disassembler options" "${(@)${(@)${(@M)${(f)${(ps.-M switch.)$(_call_program targets objdump --help)}[2]}:#  [^ ]*}#  }%% *}"
+    _values -s , "disassembler options" "${(@)${(@)${(@M)${(f)${(ps.-M switch.)$(_call_program targets objdump --help)}[2]}:#  [^ ]*}#  }%% *}" && ret=0
   ;;
   llvm_targets)
     _values "target architecture" "${(z)${(@)${(f)$(_call_program targets
@@ -172,4 +172,4 @@ case "$state" in
   ;;
 esac
 
- 
+return ret
diff --git a/Completion/Unix/Command/_prove b/Completion/Unix/Command/_prove
index 17b48a54d..27a73fba2 100644
--- a/Completion/Unix/Command/_prove
+++ b/Completion/Unix/Command/_prove
@@ -46,6 +46,7 @@ _arguments \
   {-a,--archive}'[store output in archive file]:file:_files' \
   {-j,--jobs}'[run N jobs in parallel]:jobs:' \
   '*--state=[control persistent state]: :_values -s , state last failed passed all hot todo slow fast new old fresh save' \
+  '--statefile=[specify file to use instead of .prove]:state file:_files' \
   '--rc=[custom rcfile]:file:_files' \
   '*--rules=[limit tests run (or not) in parallel]:rules' \
   '*:file or directory:_files'
diff --git a/Completion/Unix/Command/_readelf b/Completion/Unix/Command/_readelf
index 46da00cc4..282431462 100644
--- a/Completion/Unix/Command/_readelf
+++ b/Completion/Unix/Command/_readelf
@@ -19,8 +19,8 @@ args=(
   '(-c --archive-index)'{-c,--archive-index}'[show symbol/file index in an archive]'
   \*{-x,--hex-dump=}"[dump contents of specified section as bytes]:section:($sections)"
   \*{-p,--string-dump=}"[dump contents of specified section as strings]:section:($sections)"
-  '-w+[show the contents of DWARF2 debug sections]::debug section:(l L i a p r m f F s o R t)'
-  '--debug-dump=[show the contents of DWARF2 debug sections]::section:(rawline decodedline info abbrev pubnames aranges macro frames frames-interp str loc Ranges pubtypes gdb_index trace_info trace_abbrev trace_aranges)'
+  '-w+[show the contents of DWARF2 debug sections]::debug section:(l L i a p r m f F s o R t U u T g A c k K)'
+  '--debug-dump=[show the contents of DWARF2 debug sections]::section:(rawline decodedline info abbrev pubnames aranges macro frames frames-interp str loc Ranges pubtypes gdb_index trace_info trace_abbrev trace_aranges addr cu_index links follow-links)'
   '(-I --histogram)'{-I,--histogram}'[show histogram of bucket list lengths]'
   '(-W --wide)'{-W,--wide}'[allow output width to exceed 80 characters]'
   '(- *)'{-H,--help}'[display help information]'
diff --git a/Completion/Unix/Command/_rsync b/Completion/Unix/Command/_rsync
index f79ec1dfe..c1404c908 100644
--- a/Completion/Unix/Command/_rsync
+++ b/Completion/Unix/Command/_rsync
@@ -149,6 +149,7 @@ _rsync() {
     '(--devices --specials)-D[same as --devices --specials]' \
     '(-D)--devices[preserve devices]' \
     '--no-devices[turn off --devices]' \
+    '--copy-devices[copy device contents as regular file]' \
     '(-D)--specials[preserve special files]' \
     '--no-specials[turn off --specials]' \
     '--no-D[turn off --devices and --specials]' \
@@ -161,7 +162,8 @@ _rsync() {
     '(-n --dry-run)'{-n,--dry-run}'[show what would have been transferred]' \
     '(-W --whole-file)'{-W,--whole-file}'[copy files whole (without delta-transfer algorithm)]' \
     {--no-W,--no-whole-file}'[turn off --whole-file]' \
-    '(-x --one-file-system)'{-x,--one-file-system}'[do not cross filesystem boundaries]' \
+    '--checksum-choice=[choose the checksum algorithms]:algorithm:_sequence -n 2 compadd - auto md4 md5 none' \
+    '(-x --one-file-system)'{-x,--one-file-system}"[don't cross filesystem boundaries]" \
     '(-B --block-size)'{-B,--block-size=}'[force a fixed checksum block-size]:block size' \
     '(-e --rsh)'{-e+,--rsh=}'[specify the remote shell to use]:remote-shell command:(rsh ssh)' \
     '--rsync-path=[specify path to rsync on the remote machine]:remote command' \
@@ -190,9 +192,9 @@ _rsync() {
     '--numeric-ids[do not map uid/gid values by user/group name]' \
     '--timeout=[set I/O timeout in seconds for lulls in a transfer]:seconds' \
     '--contimeout=[set connect timeout in seconds for daemon connections]:seconds' \
-    '(-I --ignore-times)'{-I,--ignore-times}'[do not skip files that match in size and mod-time]' \
+    '(-I --ignore-times)'{-I,--ignore-times}"[don't skip files that match in size and mod-time]" \
     '--size-only[skip files that match in size]' \
-    '--modify-window=[compare mod-times with reduced accuracy]:seconds' \
+    '(-@ --modify-window)'{-@+,--modify-window=}'[compare mod-times with reduced accuracy]:seconds' \
     '(-y --fuzzy)'{-y,--fuzzy}'[find similar file for basis if no destination file]' \
     '(--copy-dest --link-dest)*--compare-dest=[also compare destination files relative to specified directory]:directory:_directories' \
     '(--compare-dest --link-dest)*--copy-dest=[like --compare-dest, but also includes copies of unchanged files]:directory:_directories' \
@@ -240,6 +242,7 @@ _rsync() {
     '--preallocate[preallocate the full length of new files]' \
     '--iconv=[request charset conversion of filenames]:number' \
     '--checksum-seed=:number' \
+    "--noatime[don't alter atime when opening source files]" \
     '--read-batch=[read a batched update from the specified file]:file:_files'
 }
 
diff --git a/Completion/Unix/Command/_ruby b/Completion/Unix/Command/_ruby
index 7f7af8776..d69c378fc 100644
--- a/Completion/Unix/Command/_ruby
+++ b/Completion/Unix/Command/_ruby
@@ -1,4 +1,4 @@
-#compdef ruby irb erb -P (ruby|[ei]rb)[0-9.]# -value-,RUBY(LIB|OPT|PATH),-default-
+#compdef ruby irb erb ruby-mri -P (ruby|[ei]rb)[0-9.]# -value-,RUBY(LIB|OPT|PATH),-default-
 
 local curcontext="$curcontext" state line expl desc RUBY ret=1
 typeset -A opt_args
@@ -41,6 +41,7 @@ opts=(
   '(1 * -)--copyright[print the copyright]'
   --{en,dis}'able=[enable or disable features]:feature:(gems did_you_mean rubyopt frozen_string_literal all)'
   \!--{en,dis}able-{gems,rubyopt,all}
+  '--dump=[dump debug information]:information:_sequence compadd - insns yydebug parsetree parsetree_with_comment'
   --{external,internal}'-encoding=:charset:->charsets'
   '!'{-y,--yydebug}
   '!--dump=:target:(version copyright usage yydebug syntax parsetree parsetree_with_comment insns)'
diff --git a/Completion/Unix/Command/_strip b/Completion/Unix/Command/_strip
index 0703c50e4..630140c64 100644
--- a/Completion/Unix/Command/_strip
+++ b/Completion/Unix/Command/_strip
@@ -19,18 +19,22 @@ if _pick_variant gnu=GNU solaris --version; then
     '(-)--help[display usage information]'
     '(-)--info[display list of architectures and object formats]'
     '(-I --input-target)'{-I+,--input-target=}'[object code format of input]:bfd name:->bfdnames'
-    '(-O --output-target)'{-I+,--output-target=}'[object code format of output]:bfd name:->bfdnames'
+    '(-O --output-target)'{-O+,--output-target=}'[object code format of output]:bfd name:->bfdnames'
+    '(-D --enable-deterministic-archives -U --disable-deterministic-archives)'{-U,--disable-deterministic-archives}'[disable -D behavior]'
+    '(-D --enable-deterministic-archives -U --disable-deterministic-archives)'{-D,--enable-deterministic-archives}'[produce deterministic output when stripping archives (zero file metadata)]'
     '*'{-R+,--remove-section=}'[remove given sections]:section name'
     '--remove-relocations=[remove relocations from specified section]:section'
     '(-s --strip-all)'{-s,--strip-all}'[remove all symbols]'
     '(-g -S -d --strip-debug)'{-g,-S,-d,--strip-debug}'[remove debugging symbols]'
+    '--strip-dwo[remove all DWARF .dwo sections]'
     '--strip-unneeded[remove symbols not needed for relocation processing]'
+    '!(--no-merge-notes)'{-M,--merge-notes}
     "--no-merge-notes[don't attempt to remove redundant notes]"
     '*'{-K+,--keep-symbol=}'[keep given symbol]:symbol name'
     '*'{-N+,--strip-symbol=}'[strip given symbol]:symbol name'
     '(*)-o+[output file]:output file:_files'
     '(-p --preserve-dates)'{-p,--preserve-dates}'[preserve access and modification dates]'
-    '(-w --wildcard)'{-w,--wildcard}'[permit wilcards in symbol names]'
+    '(-w --wildcard)'{-w,--wildcard}'[permit wildcards in symbol names]'
     '(-x --discard-all)'{-x,--discard-all}'[remove non-global symbols]'
     '(-X --discard-locals)'{-X,--discard-locals}'[remove compiler-generated local symbols]'
     '--keep-file-symbols[retain symbols specifying source file names]'
diff --git a/Completion/Unix/Command/_vim b/Completion/Unix/Command/_vim
index c2612ebc2..042974338 100644
--- a/Completion/Unix/Command/_vim
+++ b/Completion/Unix/Command/_vim
@@ -40,6 +40,7 @@ arguments=(
   '(-A -H   )-F[start in Farsi mode]'
   '-T[set terminal type]:::_terminals'
   '--not-a-term[skip warning for input/output not being a terminal]'
+  '--ttyfail[exit if input or output is not a terminal]'
   '-u[use given vimrc file instead of default .vimrc]::rc file:_files'
   "--noplugin[don't load plugin scripts]"
   '-o-[number of windows to open (default: one for each file)]::window count: '
@@ -70,6 +71,7 @@ arguments=(
   '--startuptime[write startup timing messages to given file]:log file:_files'
   '--socketid[run GVIM in another window]'
   '-i[use specified viminfo file]:viminfo file [~/.viminfo]:_files'
+  '--clean[defaults, no plugins, no viminfo]'
   '(- *)'{-h,--help}'[print help and exit]'
   '(- *)--version[print version information and exit]'
   '(* -q)-t[edit file where tag is defined]:tag:_complete_tag'
diff --git a/Completion/X/Command/_evince b/Completion/X/Command/_evince
index 48d5a9aeb..21b493360 100644
--- a/Completion/X/Command/_evince
+++ b/Completion/X/Command/_evince
@@ -5,12 +5,8 @@ _arguments -s -S \
   '--version[display version information]' \
   {-h,--help}'[display help information]' \
   '--help-all[display help on all options]' \
-  '--help-sm-client[display help on session management options]' \
   '--help-gtk[display help on GTK+ options]' \
   - normal \
-  '--sm-client-disable[disable connection to session manager]' \
-  '--sm-client-state-file=[specify file containing saved configuration]:file:_files' \
-  '--sm-client-id=[specify session management ID]:id' \
   '--class=[specify program class as used by the window manager]:class' \
   '--name=[program name as used by the window manager]:name:_x_name' \
   '--gdk-debug=[specify GDK debugging flags to set]:flag' \


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-11-20  0:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-28 21:16 PATCH: completion options update Oliver Kiddle
2018-08-30  2:30 ` dana
2018-08-30  7:43   ` Oliver Kiddle
  -- strict thread matches above, loose matches on Subject: below --
2023-11-20  0:11 Oliver Kiddle
2021-08-27 12:43 Oliver Kiddle
2018-11-11  8:57 Oliver Kiddle
2018-06-19 22:09 Oliver Kiddle
2018-03-30 22:37 Oliver Kiddle

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).