about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2021-08-29 17:08:34 +0200
committerOliver Kiddle <opk@zsh.org>2021-08-29 17:08:34 +0200
commita9386df5581487e5e34ecb3ce422bacf62d10c3d (patch)
tree06f05ac1ef1e4d502ae50e42c3a5fc1dabbf8baa
parent12676c0f9fd670556a81625f23205d832a95fb17 (diff)
downloadzsh-a9386df5581487e5e34ecb3ce422bacf62d10c3d.tar.gz
zsh-a9386df5581487e5e34ecb3ce422bacf62d10c3d.tar.xz
zsh-a9386df5581487e5e34ecb3ce422bacf62d10c3d.zip
49319: completion options update
-rw-r--r--ChangeLog2
-rw-r--r--Completion/Linux/Command/_btrfs52
-rw-r--r--Completion/Linux/Command/_cpupower3
-rw-r--r--Completion/Linux/Command/_cryptsetup13
-rw-r--r--Completion/Linux/Command/_dkms11
-rw-r--r--Completion/Linux/Command/_ethtool60
-rw-r--r--Completion/Linux/Command/_findmnt9
-rw-r--r--Completion/Linux/Command/_networkmanager9
-rw-r--r--Completion/Linux/Command/_pidof2
-rw-r--r--Completion/Linux/Command/_sysstat7
-rw-r--r--Completion/Linux/Command/_valgrind1
-rw-r--r--Completion/Linux/Command/_wipefs1
-rw-r--r--Completion/Redhat/Command/_rpm1
-rw-r--r--Completion/Unix/Command/_abcde45
-rw-r--r--Completion/Unix/Command/_ansible39
-rw-r--r--Completion/Unix/Command/_attr1
-rw-r--r--Completion/Unix/Command/_dict2
-rw-r--r--Completion/Unix/Command/_dig10
-rw-r--r--Completion/Unix/Command/_entr1
-rw-r--r--Completion/Unix/Command/_gem5
-rw-r--r--Completion/Unix/Command/_getfacl1
-rw-r--r--Completion/Unix/Command/_gnutls11
-rw-r--r--Completion/Unix/Command/_gprof4
-rw-r--r--Completion/Unix/Command/_gzip8
-rw-r--r--Completion/Unix/Command/_iostat3
-rw-r--r--Completion/Unix/Command/_java66
-rw-r--r--Completion/Unix/Command/_less39
-rw-r--r--Completion/Unix/Command/_mtr2
-rw-r--r--Completion/Unix/Command/_nm3
-rw-r--r--Completion/Unix/Command/_objdump7
-rw-r--r--Completion/Unix/Command/_patchutils1
-rw-r--r--Completion/Unix/Command/_pgrep5
-rw-r--r--Completion/Unix/Command/_rar4
-rw-r--r--Completion/Unix/Command/_readelf9
-rw-r--r--Completion/Unix/Command/_ri23
-rw-r--r--Completion/Unix/Command/_ruby10
-rw-r--r--Completion/Unix/Command/_script21
-rw-r--r--Completion/Unix/Command/_sqlite3
-rw-r--r--Completion/Unix/Command/_strip1
-rw-r--r--Completion/Unix/Command/_sudo3
-rw-r--r--Completion/Unix/Command/_tiff3
-rw-r--r--Completion/Unix/Command/_tmux131
-rw-r--r--Completion/Unix/Command/_vim8
-rw-r--r--Completion/Unix/Command/_w3m20
-rw-r--r--Completion/Unix/Command/_wget4
-rw-r--r--Completion/Unix/Command/_wiggle6
-rw-r--r--Completion/Unix/Command/_xmlsoft1
-rw-r--r--Completion/Unix/Command/_xxd1
-rw-r--r--Completion/X/Command/_xrandr1
-rw-r--r--Completion/X/Command/_xterm2
50 files changed, 466 insertions, 209 deletions
diff --git a/ChangeLog b/ChangeLog
index b4da80748..ae43c1979 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2021-08-29  Oliver Kiddle  <opk@zsh.org>
 
+	* 49319: Completion/...: completion options update
+
 	* 49317: Completion/Unix/Command/_transmission,
 	Completion/Unix/Command/_gcore, Completion/Unix/Command/_pandoc,
 	Completion/Unix/Command/_luarocks: cleanup inappropriate use
diff --git a/Completion/Linux/Command/_btrfs b/Completion/Linux/Command/_btrfs
index d560928ae..bb0f724e6 100644
--- a/Completion/Linux/Command/_btrfs
+++ b/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 a/Completion/Linux/Command/_cpupower b/Completion/Linux/Command/_cpupower
index ae1f1d3d1..6763bdd12 100644
--- a/Completion/Linux/Command/_cpupower
+++ b/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 a/Completion/Linux/Command/_cryptsetup b/Completion/Linux/Command/_cryptsetup
index 45159d0be..f7149a76f 100644
--- a/Completion/Linux/Command/_cryptsetup
+++ b/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 a/Completion/Linux/Command/_dkms b/Completion/Linux/Command/_dkms
index a0a666e33..2a3c016c5 100644
--- a/Completion/Linux/Command/_dkms
+++ b/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 a/Completion/Linux/Command/_ethtool b/Completion/Linux/Command/_ethtool
index dccda4684..95a8bbfb6 100644
--- a/Completion/Linux/Command/_ethtool
+++ b/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 a/Completion/Linux/Command/_findmnt b/Completion/Linux/Command/_findmnt
index 9f13e695f..0c832364d 100644
--- a/Completion/Linux/Command/_findmnt
+++ b/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 a/Completion/Linux/Command/_networkmanager b/Completion/Linux/Command/_networkmanager
index c9b09d145..1e05252b2 100644
--- a/Completion/Linux/Command/_networkmanager
+++ b/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 a/Completion/Linux/Command/_pidof b/Completion/Linux/Command/_pidof
index 05fb23d45..dd0649ce9 100644
--- a/Completion/Linux/Command/_pidof
+++ b/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 a/Completion/Linux/Command/_sysstat b/Completion/Linux/Command/_sysstat
index 4de855b69..eba99fc5a 100644
--- a/Completion/Linux/Command/_sysstat
+++ b/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 a/Completion/Linux/Command/_valgrind b/Completion/Linux/Command/_valgrind
index 23a8cd734..b4bb3248e 100644
--- a/Completion/Linux/Command/_valgrind
+++ b/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 a/Completion/Linux/Command/_wipefs b/Completion/Linux/Command/_wipefs
index 5142def8a..8642aab92 100644
--- a/Completion/Linux/Command/_wipefs
+++ b/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 a/Completion/Redhat/Command/_rpm b/Completion/Redhat/Command/_rpm
index db7c1145d..d00f88429 100644
--- a/Completion/Redhat/Command/_rpm
+++ b/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 a/Completion/Unix/Command/_abcde b/Completion/Unix/Command/_abcde
index 361b43091..3f748d373 100644
--- a/Completion/Unix/Command/_abcde
+++ b/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 a/Completion/Unix/Command/_ansible b/Completion/Unix/Command/_ansible
index 65cae148e..6ec7d0c2e 100644
--- a/Completion/Unix/Command/_ansible
+++ b/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 a/Completion/Unix/Command/_attr b/Completion/Unix/Command/_attr
index 121c0c539..efa7c5c4f 100644
--- a/Completion/Unix/Command/_attr
+++ b/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 a/Completion/Unix/Command/_dict b/Completion/Unix/Command/_dict
index 202fc5bab..928728e06 100644
--- a/Completion/Unix/Command/_dict
+++ b/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 a/Completion/Unix/Command/_dig b/Completion/Unix/Command/_dig
index 5245a2964..3081e2cfd 100644
--- a/Completion/Unix/Command/_dig
+++ b/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 a/Completion/Unix/Command/_entr b/Completion/Unix/Command/_entr
index 3e2261a18..438ab179a 100644
--- a/Completion/Unix/Command/_entr
+++ b/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 a/Completion/Unix/Command/_gem b/Completion/Unix/Command/_gem
index 53adfb89c..7e244ccad 100644
--- a/Completion/Unix/Command/_gem
+++ b/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 a/Completion/Unix/Command/_getfacl b/Completion/Unix/Command/_getfacl
index 15be06a1c..27b5ee1c8 100644
--- a/Completion/Unix/Command/_getfacl
+++ b/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 a/Completion/Unix/Command/_gnutls b/Completion/Unix/Command/_gnutls
index 6c9956b10..b9f91264d 100644
--- a/Completion/Unix/Command/_gnutls
+++ b/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 a/Completion/Unix/Command/_gprof b/Completion/Unix/Command/_gprof
index 3bb7a5765..a7e602fd5 100644
--- a/Completion/Unix/Command/_gprof
+++ b/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 a/Completion/Unix/Command/_gzip b/Completion/Unix/Command/_gzip
index 42d4ae705..8354b34d4 100644
--- a/Completion/Unix/Command/_gzip
+++ b/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 a/Completion/Unix/Command/_iostat b/Completion/Unix/Command/_iostat
index f5291a19b..1152b0d8b 100644
--- a/Completion/Unix/Command/_iostat
+++ b/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 a/Completion/Unix/Command/_java b/Completion/Unix/Command/_java
index ee0441d97..ff6e82645 100644
--- a/Completion/Unix/Command/_java
+++ b/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 a/Completion/Unix/Command/_less b/Completion/Unix/Command/_less
index cb71314a6..0b474b991 100644
--- a/Completion/Unix/Command/_less
+++ b/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 a/Completion/Unix/Command/_mtr b/Completion/Unix/Command/_mtr
index 806e344d1..9a73cfbd4 100644
--- a/Completion/Unix/Command/_mtr
+++ b/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 a/Completion/Unix/Command/_nm b/Completion/Unix/Command/_nm
index 2f608c5fc..79f537ac6 100644
--- a/Completion/Unix/Command/_nm
+++ b/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 a/Completion/Unix/Command/_objdump b/Completion/Unix/Command/_objdump
index 5152e6b6e..e2dde7e4c 100644
--- a/Completion/Unix/Command/_objdump
+++ b/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 a/Completion/Unix/Command/_patchutils b/Completion/Unix/Command/_patchutils
index 50ea3e4c4..a5f6441b1 100644
--- a/Completion/Unix/Command/_patchutils
+++ b/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 a/Completion/Unix/Command/_pgrep b/Completion/Unix/Command/_pgrep
index 38b1aebd8..afd2fe54b 100644
--- a/Completion/Unix/Command/_pgrep
+++ b/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 a/Completion/Unix/Command/_rar b/Completion/Unix/Command/_rar
index 68982be60..d1d381974 100644
--- a/Completion/Unix/Command/_rar
+++ b/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 a/Completion/Unix/Command/_readelf b/Completion/Unix/Command/_readelf
index edabc3da1..fc0fb7ce1 100644
--- a/Completion/Unix/Command/_readelf
+++ b/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 a/Completion/Unix/Command/_ri b/Completion/Unix/Command/_ri
index 070f46ac2..4d5a72985 100644
--- a/Completion/Unix/Command/_ri
+++ b/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 a/Completion/Unix/Command/_ruby b/Completion/Unix/Command/_ruby
index a57bffcda..0e1f5dbc0 100644
--- a/Completion/Unix/Command/_ruby
+++ b/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 a/Completion/Unix/Command/_script b/Completion/Unix/Command/_script
index ac3bf3973..7a3960be0 100644
--- a/Completion/Unix/Command/_script
+++ b/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 a/Completion/Unix/Command/_sqlite b/Completion/Unix/Command/_sqlite
index 0f03c61c1..7ef3c6daa 100644
--- a/Completion/Unix/Command/_sqlite
+++ b/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 a/Completion/Unix/Command/_strip b/Completion/Unix/Command/_strip
index e7f3418d7..3e1a6b698 100644
--- a/Completion/Unix/Command/_strip
+++ b/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 a/Completion/Unix/Command/_sudo b/Completion/Unix/Command/_sudo
index e3d12d72f..29e5e6d75 100644
--- a/Completion/Unix/Command/_sudo
+++ b/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 a/Completion/Unix/Command/_tiff b/Completion/Unix/Command/_tiff
index da55b541c..ef12777de 100644
--- a/Completion/Unix/Command/_tiff
+++ b/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 a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 284a325e5..844af58fc 100644
--- a/Completion/Unix/Command/_tmux
+++ b/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 a/Completion/Unix/Command/_vim b/Completion/Unix/Command/_vim
index d9dc1a5b3..5c6054e70 100644
--- a/Completion/Unix/Command/_vim
+++ b/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 a/Completion/Unix/Command/_w3m b/Completion/Unix/Command/_w3m
index eff9901ca..de425cfb1 100644
--- a/Completion/Unix/Command/_w3m
+++ b/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 a/Completion/Unix/Command/_wget b/Completion/Unix/Command/_wget
index d061fcd06..50fd7791a 100644
--- a/Completion/Unix/Command/_wget
+++ b/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 a/Completion/Unix/Command/_wiggle b/Completion/Unix/Command/_wiggle
index 0a2f0c0cb..1d747a479 100644
--- a/Completion/Unix/Command/_wiggle
+++ b/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 a/Completion/Unix/Command/_xmlsoft b/Completion/Unix/Command/_xmlsoft
index 9f1206988..08b123e54 100644
--- a/Completion/Unix/Command/_xmlsoft
+++ b/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 a/Completion/Unix/Command/_xxd b/Completion/Unix/Command/_xxd
index 3a8efd664..31d26ab64 100644
--- a/Completion/Unix/Command/_xxd
+++ b/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 a/Completion/X/Command/_xrandr b/Completion/X/Command/_xrandr
index 6143054aa..2551e1958 100644
--- a/Completion/X/Command/_xrandr
+++ b/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 a/Completion/X/Command/_xterm b/Completion/X/Command/_xterm
index 6d98985e7..180c2eb21 100644
--- a/Completion/X/Command/_xterm
+++ b/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]' \