From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 88f80de5 for ; Tue, 30 Jul 2019 09:45:37 +0000 (UTC) Received: (qmail 29119 invoked by alias); 30 Jul 2019 09:45:28 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 44587 Received: (qmail 12640 invoked by uid 1010); 30 Jul 2019 09:45:28 -0000 X-Qmail-Scanner-Diagnostics: from park01.gkg.net by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25524. spamassassin: 3.4.2. Clear:RC:0(205.235.26.22):SA:0(-1.6/5.0):. Processed in 3.165104 secs); 30 Jul 2019 09:45:28 -0000 X-Envelope-From: SRS0=V9kW=V3=yahoo.co.uk=okiddle@bounces.park01.gkg.net X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at bounces.park01.gkg.net designates 205.235.26.22 as permitted sender) X-Virus-Scanned: by amavisd-new at gkg.net Authentication-Results: amavisd4.gkg.net (amavisd-new); dkim=pass (2048-bit key) header.d=yahoo.co.uk X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1564479876; bh=nl8M7KkhL8ddgA6d/u8sIZvNcv+syQWVOy3FLw6Lv88=; h=From:To:Subject:Date:From:Subject; b=mlLDuJvanF8ig1yaVIH/eNAKL0DcT5usogVnE8g9SVOK6Vgt7rb9izXk5MUlI6dXw/SbmZMVvW6cLieRPgA0u2ZoHJZSfLd6akE0nFJkE0lw8QzVvwCU9GRupno+xO47u0Fi52jzWonIJOvmKPviOaM7qxCYCZOKI7qtnU2HKW732OTm02M99jgz3MzcM2nrm2hf57gBqDCPUUldo3VkQdUtiE7Y86tR+ggZDtht3zRMR7QLV+vfW9zopVPr+NGpPZNsxl8nYFihNh4U9CYFNmcdDTPvmKE3s4PeFu/++9VS8JCcTgZ4vPhPpOzi3fkNOu1HRVRq4Pu0TqxIQ8YqoQ== X-YMail-OSG: nhARc1kVM1l8zVMraG6pZs4SyAG.KmxX_nfcgXJAv3lS5KW8XAk13_y6WYvM5Ny AsAM8xCCXEfRqMkK9t8i5PG9.RX3w.0_9R0HnqECSYbdvQdqAXwLGRVuuQBY5yvjLZLwk6oU6Bp2 9JNHLxTj9MgNKbef5Te52ZVTjUi4veBIXXIoXE1zFaxVVrpNIoQ0FGFJrBK8DFrtMe.20e2ITBiO 1TUmIVUHGksXrgCXvSpMp9ADZlJX04DHvBwIyVqBY_R_HhKndXf8ziROAaG77m7opxaxojGYZgwe c9zXkzHQqyxF4UHiejo1ZNcijZGIzsh4e.u6bA14FQd5QtbSRpgTW7hCA8oN89ACoOTzCBgyG_bA hxyp.8qGsDdelcgn5.C_C3p9rFu8lSNoO3udjGuFC.Q6iidvL2n16ju6GgMVA.qTE4uiccmddr76 2yUfDs9cZcDdP2i5CiLQdWhUL3p8oNCPMMGc0rNYOfRD6l2x1nvEgg_.iDCLXbZnHEdrfYJFx3Pw e_9cZv8JWhzD.hjyNyvEV7Yjbs5IpufsN.6799S0mSqtz3ypB7JaQLchiqstjpY6zCrec.iUrvq8 5n88RDWjXF38W0u1zQ5N1lHVZVmAZ5YYdIrq0r9GzqHBL6mQhCRyT5zUOyTmcgfB.rd0HXJ1ErIB pYg6FSaLQqhHSh90VY9AwStEV0bmQbmHqdw1sZMW.3KSxF7fidAFrhzENEJN01G_ehB_dyx9IxAB pCM4k6tA5.D5mzFGgUsbbWz9ksBMfmtkqc8hsumNyiPcJpapzNgBLciWWohHw2fMve6l3OGnNWGf AXBl56Y_S_WSUHu8pllZMN6fxPwm0h872KdYgOJMXYFdoDDWK_t3PMi.xlS16wzlE4r63wnpv4WL lHtNaJMu85Nssvj3aJY656cbEuJh_JiRhXwj_Klt9Jb7wP1WcjxiQNbmGems3GfaaEoucXA0YSJT 9X8PFvoDlZ7LNuT_lTRfVQSRW0wXqgpBQxzo7vayAc2FxhG7z.ToXisEh1RSKeax9ZwWvQO.jEAm 79WU3JPRhmCu.y0i.eiIbUAHnxCy4kwJFW3IbZKwXLniyF4aKm9bmHwnEB7cGFGWXWkjRF1eJnqj GLvfkdFC3t.miQe1P23vUa8J9VlB.uydZKJcL_XTPVSaU0_uyH_nZ71CQzvp7IycuJ5MpialoQ3i MXZY5M_IRw_DiHchy8kNQyrjbYy9Y8vtB8vNpHxtd7B0- From: Oliver Kiddle To: Zsh workers Subject: PATCH: completion option updates MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-ID: <85906.1564479873.1@hydra> Content-Transfer-Encoding: 8bit Date: Tue, 30 Jul 2019 11:44:33 +0200 Message-ID: <85907-1564479873.950581@P3GT.6i60.EtfZ> Following patch updates completion for some options for some recent releases based on my usual process of comparing help output. Applicable versions are: ansible 2.8.2 btrfs 5.1 GNU awk 5.0.1 gnutls 3.6.8 less 550 lsof 4.93.2 mpc 0.32 nmcli 1.20.0 - also adds completion of properties rclone 1.47.0 sqlite 3.29.0 ss 190510 sshfs 3.5.2 strace 5.2 tmux 2.9a gcore, ifconfig (dragonfly 5.6.1) ln (netbsd 8.1) Oliver diff --git a/Completion/Linux/Command/_btrfs b/Completion/Linux/Command/_btrfs index cc42dd153..bc941621e 100644 --- a/Completion/Linux/Command/_btrfs +++ b/Completion/Linux/Command/_btrfs @@ -172,11 +172,17 @@ while (( $#state )); do ) [[ ${${(P)group}[cmd]} == add ]] && args+=( - {-K,--nodiscard}"[don't perform discard]" + {-K,--nodiscard}"[don't perform whole device TRIM]" {-f,--force}'[force overwrite of existing filesystem]' ) ;; - device:scan) args+=( '(1 -)'{-d,--all-devices}'[scan all devices in /dev]' '1:device:_files -g "*(-%)"' );; + device:scan) + args+=( + '(-)'{-u,--forget}'[unregister all stale devices or a given device]' + '(1 -)'{-d,--all-devices}'[enumerate and register all devices]' + '1:device:_files -g "*(-%)"' + ) + ;; device:stats) args+=( '(-c --check)'{-c,--check}'[return non-zero if any stat counter is not zero]' @@ -214,7 +220,7 @@ while (( $#state )); do '(-d -s)-m+[act on metadata chunks]:filter:->filters' '(-d -m)-s+[act on system chunks (only under -f)]:filters:->filters' '-v[verbose mode]' - '-f[force reducing of metadata integrity]' + '-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 -/' @@ -286,7 +292,7 @@ while (( $#state )); do '(-r --roots)'{-r,--roots}'[print only short root node info]' '(-R --backups)'{-R,--backups}'[same as --roots plus print backup root info]' '(-u --uuid)'{-u,--uuid}'[print only the uuid tree]' - '(-b --block)'{-b,--block}'[print info from the specified block only]:block' + \*{-b,--block}'[print info from the specified block only]:block number' '(-t --tree)'{-t,--tree}'[print only tree with the given id (string or number)]:tree id' '--follow[use with -b, to show all children tree blocks of the block]' ) @@ -366,6 +372,9 @@ while (( $#state )); do '2:path:_files -/' ) ;; + send|receive) + args+=( '(-q --quiet)'{-q,--quiet}'[suppress all messages except errors]' ) + ;| send) args+=( '*-v[verbose mode]' @@ -375,7 +384,6 @@ while (( $#state )); do '-f[specify output file]:file:_files' '--no-data[send in NO_FILE_DATA mode]' '(-v --verbose)'{-v,--verbose}'[enable verbose output]' - '(-q --quiet)'{-q,--quiet}'[suppress all messages except errors]' '1:subvolume:_files -/' ) ;; diff --git a/Completion/Linux/Command/_networkmanager b/Completion/Linux/Command/_networkmanager index fa9301971..c9b09d145 100644 --- a/Completion/Linux/Command/_networkmanager +++ b/Completion/Linux/Command/_networkmanager @@ -4,6 +4,7 @@ _networkmanager() { local curcontext="$curcontext" state line + local nmcli="$words[1]" _arguments -C \ '(-o -overview)-o'{,verview}'[overview mode (hide default values)]' \ @@ -107,10 +108,22 @@ _nm_connection_down() { } _nm_connection_modify() { - # TODO: add support for options and properties - _arguments \ + local curcontext="$curcontext" ret=1 + local -a state line expl properties + + _arguments -A "-*" \ "--temporary" \ - "1:connection:_nm_connection_specs" + "1:connection:_nm_connection_specs" \ + '2:option:->properties' \ + '3:value' && ret=0 + + if [[ -n "$state" ]]; then + properties=( ${${(f)"$(_call_program properties $nmcli -t connection show $line[1])"}%%:*} ) + _description properties expl property + _multi_parts "$expl[@]" . properties && ret=0 + fi + + return ret } _nm_connection_clone() { @@ -245,6 +258,7 @@ _nm_device_wifi() { _nm_device_wifi_list() { # TODO: support bssid on its own _arguments \ + '--rescan[force or disable network scan]:network scan:(yes no auto)' \ "1: :(ifname)" \ "2:interface:_nm_device_ifnames" \ "3: :(bssid)" \ diff --git a/Completion/Linux/Command/_ss b/Completion/Linux/Command/_ss index f19b94995..1dbd717eb 100644 --- a/Completion/Linux/Command/_ss +++ b/Completion/Linux/Command/_ss @@ -36,8 +36,9 @@ _arguments -C -s \ "($info -w --raw)"{-w,--raw}'[display RAW sockets]' \ "($info -x --unix)"{-x,--unix}'[display Unix domain sockets]' \ "($info)--tipc[display only TIPC sockets]" \ + "($info)--xdp[display only XDP sockets]" \ "($info)--vsock[display only vsock sockets]" \ - "($info -f --family)"{-f+,--family=}'[display sockets of specified type]:family:(unix inet inet6 link netlink unix vsock tipc)' \ + "($info -f --family)"{-f+,--family=}'[display sockets of specified type]:family:(inet inet6 link unix netlink vsock tipc xdp help)' \ "($info -K --kill)"{-K,--kill}'[forcibly close sockets, display what was closed]' \ "($info -H --no-header)"{-H,--no-header}'[suppress header line]' \ "($info -A --query --socket)"{-A+,--query=,--socket=}'[specify socket tables to show]: :_values -s , socket\ table all inet tcp udp raw unix packet netlink unix_dgram unix_stream unix_seqpacket packet_raw packet_dgram vsock_stream vsock_dgram tipc' \ diff --git a/Completion/Linux/Command/_sshfs b/Completion/Linux/Command/_sshfs index 6e889cf49..3363ecdc0 100644 --- a/Completion/Linux/Command/_sshfs +++ b/Completion/Linux/Command/_sshfs @@ -12,7 +12,7 @@ _arguments -C -S : \ '-C[enable compression]' \ '-F[specify ssh config file]:file:_files' \ '*-o[specify mount options]:options:->options' \ - '(-f)-d[enable debug output]' \ + '(-d --debug -f)'{-d,--debug}'[enable debug output]' \ '-f[foreground]' \ '-s[disable multithreaded operation]' \ ':remote directory:_user_at_host -S:' \ @@ -20,14 +20,14 @@ _arguments -C -S : \ if [[ $state == options ]]; then _values -s , "sshfs or fuse or mount options" \ - debug reconnect delay_connect sshfs_sync no_readahead sync_readdir sshfs_debug \ - 'cache:cache setting:(yes no)' \ - 'cache_max_size:size [10000]' \ - 'cache_timeout:timeout (seconds) [20]' \ - cache_{stat,dir,link}_timeout:'timeout (seconds)' \ - 'cache_clean_interval:interval [60]' \ - 'cache_min_clean_interval:interval [5]' \ - 'workaround:workaround:(none all rename delaysrv truncate nobuflimit)' \ + reconnect delay_connect sshfs_sync no_readahead sync_readdir \ + 'dir_cache:cache setting:(yes no)' \ + 'dcache_max_size:size [10000]' \ + 'dcache_timeout:timeout (seconds) [20]' \ + dcache_{stat,dir,link}_timeout:'timeout (seconds)' \ + 'dcache_clean_interval:interval [60]' \ + 'dcache_min_clean_interval:interval [5]' \ + 'workaround:workaround:(none all rename renamexdev delaysrv truncate nobuflimit fstat createmode)' \ 'idmap:user/group mapping:(none user file)' \ uidfile:file:_files \ gidfile:file:_files \ diff --git a/Completion/Linux/Command/_strace b/Completion/Linux/Command/_strace index e6dc88659..683673fdd 100644 --- a/Completion/Linux/Command/_strace +++ b/Completion/Linux/Command/_strace @@ -29,6 +29,8 @@ _arguments -C -s \ '-w[summarise syscall latency]' \ '*-e+[select events to trace or how to trace]:system call:->expressions' \ '*-P+[trace only system calls accessing given path]:path:_files' \ + '(-Z)-z[trace only system calls that return success]' \ + '(-z)-Z[trace only system calls that return an error]' \ '-b+[detach from process on specified syscall]:syscall:(execve)' \ '-f[trace child processes as they are created by currently traced processes]' \ '(-c -C)-ff[write each process trace to . (when using -o ]' \ @@ -57,25 +59,44 @@ case $state in 'write[perform a full hex and ASCII dump of all the data written to listed file descriptors]:file descriptor:_sequence _file_descriptors' \ 'fault[perform syscall fault injection]:system call:_sys_calls -a -n' \ 'inject[perform syscall tampering]:system call:_sys_calls -a -n' \ + 'status[trace system calls with given return status]:status:->status' \ 'kvm[print the exit reason of kvm vcpu]: :(vcpu)' && ret=0 - if [[ $words[CURRENT] != *=* || $state = syscalls ]]; then + if [[ $state = status ]]; then + _values -s , 'return status [all]' \ + all successful failed \ + "unfinished[system calls that don't return]" \ + 'unavailable[system calls that return but strace fails to fetch the error]' \ + 'detached[system calls where strace detaches before the return]' && ret=0 + elif [[ $words[CURRENT] != *=* || $state = syscalls ]]; then local dedup sets suf="-qS," compset -P '!' dedup=( ${(Ms.,.)PREFIX##*,} ${(Ms.,.)SUFFIX%%,*} ) compset -S ',*' || suf="" compset -P '*,' - sets=( - 'file:trace all system calls which take a file name as an argument' - 'process:trace all system calls which involve process management' - 'network:trace all the network related system calls' - 'signal:trace all signal related system calls' - 'ipc:trace all IPC related system calls' - 'desc:trace all file descriptor related system calls' - 'memory:trace all memory mapping related system calls' - ) - _alternative \ - "related system call:sets: _describe -t traces 'related system call' sets -F dedup $suf" \ - "system call:syscalls:_sys_calls -a -n $suf -F dedup" && ret=0 + if compset -P /; then + _wanted syscalls expl "system call (regex)" _sys_calls -a -n $suf -F dedup && ret=0 + else + sets=( + {%,}'file:trace all system calls which take a file name as an argument' + {%,}'process:trace all system calls which involve process management' + {%net,{%,}network}':trace all the network related system calls' + {%,}'signal:trace all signal related system calls' + {%,}'ipc:trace all IPC related system calls' + {%,}'desc:trace all file descriptor related system calls' + {%,}'memory:trace all memory mapping related system calls' + '%stat:trace variants of stat' + '%lstat:trace variants of lstat' + '%fstat:trace variants of fstat and fstatat' + '%%stat:trace variants of all syscalls used for requesting file status' + '%statfs:trace variants of statfs' + '%fstatfs:trace variants of fstatfs' + '%%statfs:trace variants of all syscalls used for file system statistics' + '%pure:trace syscalls that always succeed and have no arguments' + ) + _alternative \ + "sets:related system call: _describe -t traces 'related system call' sets -F dedup $suf" \ + "syscalls:system call:_sys_calls -a -n $suf -F dedup" && ret=0 + fi fi ;; file-pipe) diff --git a/Completion/Unix/Command/_ansible b/Completion/Unix/Command/_ansible index a6e586da3..686e9d355 100644 --- a/Completion/Unix/Command/_ansible +++ b/Completion/Unix/Command/_ansible @@ -110,7 +110,7 @@ case $service in '(-l --list -F --list_files -s --snippet)'{-l,--list}'[list available plugins]' '(-l --list -F --list_files -s --snippet)'{-F,--list_files}'[show plugin names and their source files without summaries]' '(-l --list -F --list_files -s --snippet)'{-s,--snippet}'[show playbook snippet for specified plugins]' - '(-t --type)'{-t+,--type=}'[choose plugin type]:plugin type [module]:(cache callback connection inventory lookup module strategy vars)' + '(-t --type)'{-t+,--type=}'[choose plugin type]:plugin type [module]:(become cache callback cliconf connection httpapi inventory lookup shell module strategy vars)' '*:plugin:->plugins' ) ;; @@ -119,9 +119,11 @@ case $service in '--export[when doing an --list, represent in a way that is optimized for export]' '(-y --yaml)--graph[output inventory graph]' '--host[output specific host information]' + '--output=[with --list, specify output file]:file:_files' '--list[output all hosts information]' + '(-y --yaml --vars --graph)--toml[use TOML format instead of JSON]' '(-y --yaml)--vars[add variables to the graph display]' - '(-y --yaml --vars --graph)'{-y,--yaml}'[use YAML format instead of JSON]' + '(-y --yaml --toml --vars --graph)'{-y,--yaml}'[use YAML format instead of JSON]' ) ;; ansible-galaxy) @@ -176,7 +178,7 @@ esac (( $#words > 2 )) && ign='!' if (( $#args )); then _arguments -s -S -C $args \ - "${ign}(- :)--version[display version information]" \ + "${ign}(- :)--version[display version information, config and module locations]" \ "${ign}(- :)"{-h,--help}'[display usage information]' \ \*{-v,--verbose}"[verbose mode (repeat to increase)]" && ret=0 @@ -272,6 +274,7 @@ case $state in ;; install) args+=( + "--force-with-deps[force overwriting an existing role and it's dependencies]" '(-n --no-deps)'{-n,--no-deps}"[don???t download roles listed as dependencies]" '(-i --ignore-errors)'{-i,--ignore-errors}'[ignore errors and continue with the next specified role]' '(-g --keep-scm-meta)'{-g,--keep-scm-meta}'[use tar instead of the scm archive option when packaging the role]' diff --git a/Completion/Unix/Command/_awk b/Completion/Unix/Command/_awk index b23ecdf9d..dcb2a6c21 100644 --- a/Completion/Unix/Command/_awk +++ b/Completion/Unix/Command/_awk @@ -33,7 +33,7 @@ case $variant in {-e,--source}'[pass program text in arg]:program text:' '(1)'{-E+,--exec}'[like -f, but safer for CGI]:program file:->script' '(- : *)'{-h,--help}'[print usage message and exit]' - {-L-,--lint=-}'[warn about dubious or non-portable constructs]::flag:((fatal\:"treat warnings as fatal error" invalid\:"warn only about things that are actually invalid"))' + {-L-,--lint=-}'[warn about dubious or non-portable constructs]::flag:((fatal\:"treat warnings as fatal error" invalid\:"warn only about things that are actually invalid" no-ext\:"disable warnings about gawk extensions"))' {-n,--non-decimal-data}'[auto-detect octal/hexadecimal values in input]' {-N,--use-lc-numeric}"[force use of locale's decimal point character]" {-O,--optimize}'[enable optimization]' diff --git a/Completion/Unix/Command/_gcore b/Completion/Unix/Command/_gcore index 72d11864b..07a65cd9a 100644 --- a/Completion/Unix/Command/_gcore +++ b/Completion/Unix/Command/_gcore @@ -33,6 +33,15 @@ case $OSTYPE in '-c+[write core file to specified file]:file:_files' \ '*:pid:_pids' ;; + dragonfly*) + _arguments -s \ + '-c+[write core file to specified file]:file:_files' \ + '-l+[skip map segments larger than the specified limit]:limit (bytes)' \ + '-s[stop the process while gathering the core image]' \ + '-v[Verbosely print out the map segments being dumped]' \ + '::executable:' \ + ':pid:_pids' + ;; freebsd*) _arguments -s \ '-c+[write core file to specified file]:file:_files' \ diff --git a/Completion/Unix/Command/_gnutls b/Completion/Unix/Command/_gnutls index b0d33e2fa..8b8f6c78e 100644 --- a/Completion/Unix/Command/_gnutls +++ b/Completion/Unix/Command/_gnutls @@ -38,6 +38,8 @@ case "$service" in '*--x509keyfile=[specify X.509 key file to use]:file:_files' '*--x509certfile=[specify X.509 certificate 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' ) ;| gnutls-cli|gnutls-serv|certtool) diff --git a/Completion/Unix/Command/_ifconfig b/Completion/Unix/Command/_ifconfig index c5b5af8d4..25ddd55bd 100644 --- a/Completion/Unix/Command/_ifconfig +++ b/Completion/Unix/Command/_ifconfig @@ -36,6 +36,9 @@ case $OSTYPE in {,-}wep {,-}nwkey add delete ether {,-}link{0,1,2} list wme wmm roam roam:rssi roam:rate roaming ) + ;| + dragonfly*) + args+=( '-n[disable auto-loading of kernel network interface driver]' ) ;; irix5*) opts=( $debug ) ;; irix6*) diff --git a/Completion/Unix/Command/_less b/Completion/Unix/Command/_less index 44e4653eb..cb71314a6 100644 --- a/Completion/Unix/Command/_less +++ b/Completion/Unix/Command/_less @@ -84,7 +84,12 @@ _arguments -S -s -A "[-+]*" \ '(-~ --tilde)'{-~,--tilde}"[don't display tildes after end of file]" \ '(-\# --shift)'{-\#+,--shift=}"[specify amount to move when scrolling horizontally]:number" \ '--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]' \ '--use-backslash[subsequent options use backslash as escape char]' \ + '--wheel-lines=[specify lines to move for each click of the mouse wheel]:lines' \ "$files[@]" && ret=0 diff --git a/Completion/Unix/Command/_ln b/Completion/Unix/Command/_ln index d67e54264..9d5efcabb 100644 --- a/Completion/Unix/Command/_ln +++ b/Completion/Unix/Command/_ln @@ -63,7 +63,7 @@ case $variant; in '(-P)-L[create hard links to symbolic link references]' ) ;| - dragonfly*|freebsd*) + dragonfly*|freebsd*|netbsd*) args+=( "-w[warn if source of a symbolic link doesn't currently exist]" ) diff --git a/Completion/Unix/Command/_lsof b/Completion/Unix/Command/_lsof index 86115a4ef..754012e3b 100644 --- a/Completion/Unix/Command/_lsof +++ b/Completion/Unix/Command/_lsof @@ -1,9 +1,16 @@ #compdef lsof -local curcontext="$curcontext" state line expl fields args alts suf hsuf pref ret=1 +local curcontext="$curcontext" ret=1 +local -a state line expl args vals fields alts suf hsuf pref case $OSTYPE in - linux*) args=( '-X[skip reporting of info on network connections]' ) ;; + linux*) + args=( + '-E[display endpoint info for pipes, sockets and pseudoterminal files but not files of the endpoints]' + '+E[display endpoint info for pipes, sockets and pseudoterminal files including files of the endpoints]' + '-X[skip reporting of info on network connections]' + ) + ;; solaris*) args=( '-X[include deleted files]' @@ -24,8 +31,8 @@ _arguments -C -s -S $args \ '+D[recursively search from specified dir]:search directory:_files -/' \ '-D[direct use of device cache file]:function:((\?\:report\ device\ cache\ file\ paths b\:build\ the\ device\ cache\ file i\:ignore\ the\ device\ cache\ file r\:read\ the\ device\ cache\ file u\:read\ and\ update\ the\ device\ cache\ file))' \ '*-+e[exempt filesystem from blocking kernel calls]:file system:_directories' \ - '-f[inhibit listing of kernel file structure info]::info type or path:(c f g G n)' \ - '+f[enable listing of kernel file structure info]::info type:(c f g G n)' \ + '-f[inhibit listing of kernel file structure info]::info type:->file-structures' \ + '+f[enable listing of kernel file structure info]::info type:->file-structures' \ '-F[select output fields]:fields:->fields' \ '-g[select by process group id]::process group id' \ '(*)*-i[select internet files]::address:->addresses' \ @@ -93,6 +100,18 @@ case $state in _sequence -s , _wanted -x file-descriptors expl "file descriptor" compadd - \ cwd err jld ltz mem mmap pd rtd tr txt v86 && ret=0 ;; + file-structures) + vals=( + 'g[file flag abbreviations]' + 'G[file flags in hexadecimal]' + ) + [[ $OSTYPE != linux* ]] && vals+=( + 'c[file structure use count]' + 'f[file structure address]' + 'n[file structure node address]' + ) + _values 'kernel file structures' $vals && ret=0 + ;; states) if compset -P 1 '*:'; then _sequence _wanted states expl state compadd - -M 'm:{a-z}={A-Z}' \ diff --git a/Completion/Unix/Command/_mpc b/Completion/Unix/Command/_mpc index 0f292ab4c..7f7adc7b4 100644 --- a/Completion/Unix/Command/_mpc +++ b/Completion/Unix/Command/_mpc @@ -69,6 +69,7 @@ _mpc_command() { find:"search for a song, exact match" findadd:"find songs and add them to the current playlist" list:"list all tags of given type" + listneighbors:"list neighbors" seek:"seek to the position specified in percent" seekthrough:"seek by an amount of time within the song and playlist" shuffle:"shuffle the current playlist" diff --git a/Completion/Unix/Command/_rclone b/Completion/Unix/Command/_rclone index 51a67c9a0..01d851fa1 100644 --- a/Completion/Unix/Command/_rclone +++ b/Completion/Unix/Command/_rclone @@ -77,7 +77,7 @@ _arguments -C \ '(-n --dry-run)'{-n,--dry-run}'[do a trial run with no permanent changes]' \ '--dump[list of items to dump from]:string:_sequence compadd - headers bodies requests responses auth filters goroutines openfiles' \ '--dump-bodies[dump HTTP headers and bodies - may contain sensitive info]' \ - '--dump-headers[dump HTTP bodies - may contain sensitive info]' \ + '--dump-headers[dump HTTP headers - may contain sensitive info]' \ '--exclude[exclude files matching pattern]:stringArray' \ '--exclude-from[read exclude patterns from file]:files:_files' \ '--exclude-if-present[exclude directories if filename is present]:string' \ @@ -86,6 +86,7 @@ _arguments -C \ {-f,--filter}'[add a file-filtering rule]:stringArray' \ '--filter-from[read filtering patterns from a file]:file:_files' \ '--ignore-case[ignore case in filters (case insensitive)]' \ + '--ignore-case-sync[ignore case when synchronizing]' \ '--ignore-checksum[skip post copy check of checksums]' \ '--ignore-errors[delete even if there are I/O errors]' \ '--ignore-existing[skip all files that exist on destination]' \ @@ -108,6 +109,8 @@ _arguments -C \ '--min-age[only transfer files older than this in s or suffix ms|s|m|h|d|w|M|y]:duration [default off]' \ '--min-size[only transfer files bigger than this in k or suffix b|k|M|G]:int [default off]' \ '--modify-window[specify max time delta to be considered the same]:duration [1ns]' \ + '--multi-thread-cutoff[use multi-threaded downloads for files above specified size]:size (250M)' \ + '--multi-thread-streams[specify max number of streams to use for multi-threaded downloads]:number (4)' \ "--no-check-certificate[don't verify the server SSL certificate (insecure)]" \ "--no-gzip-encoding[don't set Accept-Encoding: gzip]" \ '!--no-traverse' \ @@ -120,6 +123,8 @@ _arguments -C \ '--rc-client-ca[client certificate authority to verify clients with]:string' \ '--rc-files[path to local files to serve on the HTTP server]:directory:_path_files -/' \ '--rc-htpasswd[htpasswd file - if not provided no authentication is done]:file:_files' \ + '--rc-job-expire-duration[expire finished async jobs older than specified duration]:duration (1m0s)' \ + '--rc-job-expire-interval[specify interval to check for expired async jobs]:interval (10s)' \ '--rc-key[SSL PEM Private key]:string' \ '--rc-max-header-bytes[maximum size of request header]:int [4096]' \ "--rc-no-auth[don't require auth for certain methods]" \ @@ -136,6 +141,8 @@ _arguments -C \ '--stats-file-name-length[max file name length in stats. 0 for no limit]:int [40]' \ '--stats-log-level[log level to show --stats output]:string [INFO]:(DEBUG INFO NOTICE ERROR)' \ '--stats-one-line[make the stats fit on one line]' \ + '--stats-one-line-date[enable --stats-one-line and add current date/time prefix]' \ + '--stats-one-line-date-format[enable --stats-one-line-date and use custom formatted date]:date format' \ '--stats-unit[specify units for data rate in stats]:unit [bytes]:(bits bytes)' \ '--streaming-upload-cutoff[specify size cutoff for switching to chunked upload]:size [100k]' \ '--suffix[specify suffix for use with --backup-dir]:string' \ @@ -219,9 +226,11 @@ _arguments -C \ '--drive-list-chunk[size of listing chunk 100-1000. 0 to disable]:int [1000]' \ '--drive-root-folder-id[specify ID of the root folder]:string' \ '--drive-scope[scope that rclone should use when requesting access from drive]:scope' \ + '--drive-server-side-across-configs[allow server side operations (eg copy) to work across different drive configs]' \ '--drive-service-account-credentials[specify service account credentials JSON blob]:string' \ '--drive-service-account-file[specify service account credentials JSON file path]:file:_files' \ '--drive-shared-with-me[only show files that are shared with me]' \ + '--drive-size-as-quota[show storage quota usage for file size]' \ '--drive-skip-gdocs[skip google documents in all listings]' \ '--drive-team-drive[specify ID of the team drive]:ID' \ '--drive-trashed-only[only show files that are in the trash]' \ @@ -234,9 +243,11 @@ _arguments -C \ '--dropbox-client-secret[specify Dropbox app client secret]:secret' \ '--dropbox-impersonate[impersonate specified user]:user' \ '--ftp-host[specify FTP host to connect to]:host:_hosts' \ + "--ftp-no-check-certificate[don't verify the TLS certificate of the server]" \ '--ftp-pass[specify FTP password]:password' \ '--ftp-port[specify FTP port]:port [21]:_ports' \ - '--ftp-user[specify FTP username]:username' \ + '--ftp-tls[use FTP over TLS (implicit)]' \ + '--ftp-user[specify FTP username]::username' \ '--gcs-bucket-acl[access control list for new buckets]:string' \ '--gcs-client-id[Google application client id]:client id' \ '--gcs-client-secret[Google application client secret]:secret' \ @@ -251,7 +262,6 @@ _arguments -C \ '--hubic-client-secret[Hubic client secret]:secret' \ '--jottacloud-hard-delete[delete files permanently rather than putting them into the trash]' \ '--jottacloud-md5-memory-limit[files bigger than this will be cached on disk to calculate the MD5 if required]:size [10M]' \ - '--jottacloud-mountpoint[the mountpoint to use]:string' \ '--jottacloud-pass[password]:string' \ '--jottacloud-unlink[remove existing public link to file/folder with link command rather than creating]' \ '--jottacloud-user[user name]:string' \ @@ -286,6 +296,7 @@ _arguments -C \ '--s3-storage-class[the storage class to use when storing new objects in S3]:string' \ '--s3-upload-concurrency[concurrency for multipart uploads]:int [2]' \ '--s3-v2-auth[if true use v2 authentication]' \ + '--s3-use-accelerate-endpoint[use the AWS S3 accelerated endpoint]' \ '--sftp-ask-password[allow asking for SFTP password when needed]' \ '--sftp-disable-hashcheck[disable the execution of SSH commands to determine if remote file hashing is available]' \ '--sftp-host[SSH host to connect to]:string' \ diff --git a/Completion/Unix/Command/_sqlite b/Completion/Unix/Command/_sqlite index 924b80926..5aa210d6b 100644 --- a/Completion/Unix/Command/_sqlite +++ b/Completion/Unix/Command/_sqlite @@ -46,9 +46,11 @@ options+=( $^dashes'-append[append the database to the end of the file]' $^dashes'-bail[stop after hitting an error]' $^dashes'-cmd[run specified command before reading stdin]:sqlite meta-command' + $^dashes'-deserialize[open the database using sqlite3_deserialize()]' '(-*batch -*interactive)'$^dashes'-batch[force batch I/O]' '(-*batch -*interactive)'$^dashes'-interactive[force interactive I/O]' $^dashes'-lookaside[specify size and number of entries for lookaside memory]:size (bytes): :entries' + $^dashes'-maxsize[specify maximum size for a --deserialize database]:size' $^dashes'-memtrace[trace all memory allocations and deallocations' $^dashes'-mmap[set default mmap size]:size' $^dashes'-newline[set output row separator]:separator [\n]' diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux index 0e8fe2223..b525d351e 100644 --- a/Completion/Unix/Command/_tmux +++ b/Completion/Unix/Command/_tmux @@ -96,6 +96,7 @@ _tmux_aliasmap=( prevl previous-layout renamew rename-window resizep resize-pane + resizew resize-window respawnp respawn-pane respawnw respawn-window rotatew rotate-window @@ -301,17 +302,20 @@ _tmux-detach-client() { _tmux-display-message() { [[ -n ${tmux_describe} ]] && print "display a message in the status line" && return - _arguments -s -S \ + _arguments -s -S -A "-*" \ + '(-p -F :)-a[list the format variables and their values]' \ '-c+[specify target client]:client:__tmux-clients' \ - '-p[print message to stdout]' \ + '(-a)-p[print message to stdout]' \ '-t+[specify target pane]:pane:__tmux-panes' \ - '-F+[specify output format]:format:__tmux-formats' \ + '(-a)-F+[specify output format]:format:__tmux-formats' \ + '(-a)-v[prints verbose logging as the format is parsed]' \ ':message' } _tmux-display-panes() { [[ -n ${tmux_describe} ]] && print "display an indicator for each visible pane" && return _arguments -S \ + "-b[don't block other commands until indicator is closed]" \ '-d+[time to show indicator for]:duration (ms)' \ '-t+[specify target client]:client:__tmux-clients' \ '*:::command:= _tmux' @@ -324,6 +328,7 @@ _tmux-find-window() { '-N[match window name]' \ '-T[match window title]' \ '-t+[specify target window]:window:__tmux-windows' \ + '-Z[zoom the pane]' \ ':window search pattern' } @@ -584,10 +589,17 @@ _tmux-previous-window() { _tmux-refresh-client() { [[ -n ${tmux_describe} ]] && print "refresh a client" && return - _arguments -s \ + _arguments -s -S -A "-*" \ + '-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]' \ + '-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]" \ '-t+[specify target client]:client:__tmux-clients' \ - '-C+:size' + '-R[move visible portion of window right]' \ + '-U[move visible portion of window up]' \ + ': :_guard "[0-9]#" "adjustment"' } _tmux-rename-session() { @@ -616,7 +628,22 @@ _tmux-resize-pane() { '-x+[specify width]:width' \ '-y+[specify height]:height' \ '-Z[toggle zoom of pane]' \ - ':adjustment' + ': :_guard "[0-9]#" "adjustment"' +} + +_tmux-resize-window() { + [[ -n ${tmux_describe} ]] && print "resize a window" && return + _arguments -s -A "-*" -S : \ + '-A[set size of largest session containing the window]' \ + '-a[set size of smallest session containing the window]' \ + '-D[resize downward]' \ + '-L[resize to the left]' \ + '-R[resize to the right]' \ + '-U[resize upward]' \ + '-t+[specify target pane]:pane:__tmux-windows' \ + '-x+[specify width]:width' \ + '-y+[specify height]:height' \ + ': :_guard "[0-9]#" "adjustment"' } _tmux-respawn-pane() { @@ -1071,7 +1098,7 @@ function __tmux-environment-variables() { if _describe -t parameters $msg descriptions; then : elif [[ -n $hint ]]; then - _message $msg + _message -e $msg fi ;; (value) @@ -1079,10 +1106,10 @@ function __tmux-environment-variables() { # TODO: this if/else is because '_description -x' prints the "No matches" error in addition to the message. if [[ -n $var_and_val ]]; then local -a expl - _description -x parameter-values expl "Value for ${words[-2]}" + _description -x parameter-values expl "value for ${words[-2]}" compadd "$expl[@]" - ${var_and_val#*=} else - _message "Value for ${words[-2]}" + _message -e "value for ${words[-2]}" fi ;; (*) @@ -1128,7 +1155,7 @@ function __tmux-get-optarg() { } __tmux-nothing-else() { - _message "no further arguments" + _message -e "no further arguments" } function __tmux-option-guard() { @@ -1140,12 +1167,13 @@ function __tmux-option-guard() { int_guard='_guard "[0-9]#" "'${opt}': numeric value"' if [[ ${mode} == 'session' ]]; then options=( + 'activity-action:DESC:any none current other' 'assume-paste-time:'${int_guard} 'base-index:'${int_guard} 'bell-action:DESC:any none current other' - 'bell-on-alert:DESC:on off' 'default-command:MSG:command string' 'default-shell:MSG:shell executable' + 'default-size:MSG:XxY' 'destroy-unattached:DESC:on off' 'detach-on-destroy:DESC:on off' 'display-panes-colour:__tmux-colours' @@ -1164,7 +1192,9 @@ function __tmux-option-guard() { 'repeat-time:'${int_guard} 'set-titles:DESC:on off' 'set-titles-string:MSG:title format string' + 'silence-action:DESC:any none current other' 'status:DESC:on off' + 'status-format:MSG:format string' 'status-interval:'${int_guard} 'status-justify:DESC:left centre right' 'status-keys:DESC:vi emacs' @@ -1177,6 +1207,7 @@ function __tmux-option-guard() { 'status-right-style:__tmux-style' 'status-style:__tmux-style' 'update-environment:MSG:string listing env. variables' + 'user-keys:MSG:key' 'visual-activity:DESC:on off' 'visual-bell:DESC:on off' 'visual-silence:DESC:on off' @@ -1185,13 +1216,14 @@ function __tmux-option-guard() { elif [[ ${mode} == 'server' ]]; then options=( 'buffer-limit:'${int_guard} + 'command-alias:MSG:alias' 'default-terminal:MSG:terminal string' 'escape-time:'${int_guard} + 'exit-empty:DESC:on off' 'exit-unattached:DESC:on off' 'focus-events:DESC:on off' 'history-file:_path-files -g "*(-.)"' 'message-limit:'${int_guard} - 'quiet:DESC:on off' 'set-clipboard:DESC:on off' 'terminal-overrides:MSG:overrides string' ) @@ -1204,13 +1236,12 @@ function __tmux-option-guard() { 'automatic-rename-format:DESC:__tmux-format' 'clock-mode-colour:__tmux-colours' 'clock-mode-style:DESC:12 24' - 'force-height:'${int_guard} - 'force-width:'${int_guard} 'main-pane-height:'${int_guard} 'main-pane-width:'${int_guard} 'mode-keys:DESC:vi emacs' 'mode-style:__tmux-style' 'monitor-activity:DESC:on off' + 'monitor-bell:DESC:on off' 'monitor-silence:DESC:on off' 'other-pane-height:'${int_guard} 'other-pane-width:'${int_guard} @@ -1230,6 +1261,7 @@ function __tmux-option-guard() { 'window-status-last-style:__tmux-style' 'window-status-separator:MSG:separator string' 'window-status-style:__tmux-style' + 'window-size:MSG:XxY' 'window-style:__tmux-style' 'wrap-search:DESC:on off' 'xterm-keys:DESC:on off' @@ -1241,12 +1273,11 @@ function __tmux-option-guard() { _message "unknown ${mode} option: ${opt}" return fi - _message "${mode} option value" guard=${guard#*:} case ${guard} in ('') ;; (MSG:*) - _message ${guard#*:} + _message -e ${guard#*:} ;; (DESC:*) eval "desc=( ${guard#*:} )" @@ -1261,12 +1292,13 @@ function __tmux-option-guard() { function __tmux-session-options() { local -a tmux_session_options tmux_session_options=( + 'activity-action:set action on window activity when monitor-activity is on' 'assume-paste-time:assume keys are pasted instead of typed if this fast' 'base-index:define where to start numbering' 'bell-action:set action on window bell' - 'bell-on-alert:ring the terminal bell when an alert occurs' 'default-command:default command for new windows' 'default-shell:default shell executable' + 'default-size:set the default size of windows when the size is not set' 'destroy-unattached:destroy session if no client is attached' 'detach-on-destroy:detach client if attached session is destroyed' 'display-panes-colour:colour used for display-panes' @@ -1286,7 +1318,9 @@ function __tmux-session-options() { 'repeat-time:time for multiple commands without prefix-key presses' 'set-titles:try to set xterm window titles' 'set-titles-string:format used by set-titles' + 'silence-action:set action on window silence when monitor-silence is on' 'status:show or hide the status bar' + 'status-format:specify the format to be used for each line of the status line' 'status-interval:interval (in seconds) for status bar updates' 'status-justify:position of the window list in status bar' 'status-keys:mode to use in status bar modes (vi/emacs)' @@ -1299,6 +1333,7 @@ function __tmux-session-options() { 'status-right-style:style of right part of status line' 'status-style:style status line' "update-environment:list of variables to be copied to a session's environment" + 'user-keys:set list of user-defined key escape sequences' 'visual-activity:display status line messages upon activity' 'visual-bell:use visual bell instead of audible' 'visual-silence:print a message if monitor-silence is on' @@ -1352,13 +1387,14 @@ function __tmux-server-options() { local -a tmux_server_options tmux_server_options=( 'buffer-limit:number of buffers kept per session' + 'command-alias:custom command aliases' 'default-terminal:default terminal definition string' 'escape-time:set timeout to detect single escape characters (in msecs)' 'exit-unattached:make server exit if it has no attached clients' + 'exit-empty:exit when there are no active sessions' 'focus-events:request focus events from terminal' 'history-file:tmux command history file name' 'message-limit:set size of message log per client' - 'quiet:enable/disable the display of various informational messages' 'set-clipboard:use esc sequences to set terminal clipboard' 'terminal-overrides:override terminal descriptions' ) @@ -1420,13 +1456,12 @@ function __tmux-window-options() { 'automatic-rename-format:format for automatic renames' 'clock-mode-colour:set clock colour' 'clock-mode-style:set clock hour format (12/24)' - 'force-height:force a windows to a certain height' - 'force-width:force a windows to a certain width' 'main-pane-height:set height for main-* layouts' 'main-pane-width:set width for main-* layouts' 'mode-keys:mode to use in copy and choice modes (vi/emacs)' 'mode-style:set window modes style' 'monitor-activity:monitor window activity' + 'monitor-bell:monitor for a bell in the window' 'monitor-silence:monitor window for inactivity' 'other-pane-height:height of other panes' 'other-pane-width:width of other panes' @@ -1446,6 +1481,7 @@ function __tmux-window-options() { 'window-status-last-style:style of last window in status bar' 'window-status-separator:separator drawn between windows in status line' 'window-status-style:general status bar style' + 'window-size:indicate how to automatically size windows' 'window-style:style of window' 'wrap-search:search wrap around at the end of a pane' 'xterm-keys:generate xterm-style function key sequences'