diff options
author | Oliver Kiddle <opk@zsh.org> | 2015-05-03 16:53:47 +0200 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2015-05-03 16:53:57 +0200 |
commit | ab7ec8d9851fea8230e1ccfba284c5bfaf457d88 (patch) | |
tree | 837b14c838b96728ebdb530eb20d35737ef8419b /Completion/Unix/Command/_sort | |
parent | b29278c69a67089ba225a98478069eb3f32ab4e6 (diff) | |
download | zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.gz zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.xz zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.zip |
35011: update completions for some common Unix commands,
in particular improving FreeBSD support
Diffstat (limited to 'Completion/Unix/Command/_sort')
-rw-r--r-- | Completion/Unix/Command/_sort | 107 |
1 files changed, 73 insertions, 34 deletions
diff --git a/Completion/Unix/Command/_sort b/Completion/Unix/Command/_sort index ff36b9b3d..2e7f0a01a 100644 --- a/Completion/Unix/Command/_sort +++ b/Completion/Unix/Command/_sort @@ -1,37 +1,76 @@ -#compdef sort +#compdef sort gsort +local args variant local ordering='(-d --dictionary-order -g --general-numeric-sort -M --month-sort -h --human-numeric-sort -n --numeric-sort --sort -V --version-sort --help --version)' -_arguments -s -S \ - '(-b --ignore-leading-blanks)'{-b,--ignore-leading-blanks}'[ignore leading blanks]' \ - "$ordering"{-d,--dictionary-order}'[consider only blanks and alphanumeric characters]' \ - '(-f --ignore-case)'{-f,--ignore-case}'[fold lower case to upper case characters]' \ - "$ordering"{-g,--general-numeric-sort}'[compare according to general numeric value]' \ - '(-i --ignore-nonprinting)'{-i,--ignore-nonprinting}'[consider only printable characters]' \ - "$ordering"{-M,--month-sort}"[compare (unknown) < 'JAN' < ... < 'DEC']" \ - "$ordering"{-h,--human-numeric-sort}'[compare human readable numbers (e.g., 2K 1G)]' \ - "$ordering"{-n,--numeric-sort}'[compare according to string numerical value]' \ - "$ordering"{-R,--random-sort}'[sort by random hash of keys]' \ - '--random-source=[get random bytes from file]:file:_files' \ - '(-r --reverse)'{-r,--reverse}'[reverse the result of comparisons]' \ - "$ordering--sort=[sort according to ordering]:ordering:(general-numeric human-numeric month numeric random version)" \ - "$ordering"{-V,--version-sort}'[sort version numbers]' \ - '--batch-size=[maximum inputs to merge]:number' \ - '(-c --check -C)'{-c,-C}'[check whether input is sorted; do not sort]' \ - '(-c --check -C)--check=-[check whether input is sorted; do not sort]::bad line handling:(diagnose-first silent quiet)' \ - '--compress-program=[specify program to compress temporary files with]:program:(gzip bzip2 lzop xz)' \ - '--debug[annotate the of the line used to sort]' \ - '--files0-from=[read input files from file]:file:_files' \ - '(-k --key)'{-k+,--key=}'[start a key at POS1, end it as POS2 (origin 1)]:key' \ - '(-m --merge)'{-m,--merge}'[merge already sorted files; do not sort]' \ - '(-o --output)'{-o+,--output=}'[write result to file instead of standard output]:output file:_files' \ - '(-s --stable)'{-s,--stable}'[preserve original order of lines with the same key]' \ - '(-S --buffer-size)'{-S+,--buffer-size=}'[specify size for main memory buffer]:size' \ - '(-t --field-separator)'{-t+,--field-separator=}'[specify field separator instead of non-blank to blank transition]:separator' \ - \*{-T+,--temporary-directory=}'[specify directory for temporary files]:directory:_directories' \ - '(-u --unique)'{-u,--unique}'[with -c, check for strict ordering; without -c, output only the first of an equal run]' \ - '--parallel=[set number of sorts run concurrently]:number' \ - '(-z --zero-terminated)'{-z,--zero-terminated}'[end lines with 0 byte, not newline]' \ - '(- *)--help[display help and exit]' \ - '(- *)--version[output version information and exit]' \ - '*:file:_files' +args=( + '(-c --check -C)-c[check whether input is sorted; do not sort]' + '(-m --merge)'{-m,--merge}'[merge already sorted files; do not sort]' + '(-o --output)'{-o+,--output=}'[write result to file instead of standard output]:output file:_files' + \*{-T+,--temporary-directory=}'[specify directory for temporary files]:directory:_directories' + '(-u --unique)'{-u,--unique}'[with -c, check for strict ordering; without -c, output only the first of an equal run]' + "$ordering"{-d,--dictionary-order}'[consider only blanks and alphanumeric characters]' + '(-f --ignore-case)'{-f,--ignore-case}'[fold lower case to upper case characters]' + '(-i --ignore-nonprinting)'{-i,--ignore-nonprinting}'[consider only printable characters]' + "$ordering"{-n,--numeric-sort}'[compare according to string numerical value]' + '(-r --reverse)'{-r,--reverse}'[reverse the result of comparisons]' + '(-b --ignore-leading-blanks)'{-b,--ignore-leading-blanks}'[ignore leading blanks]' + '(-t --field-separator)'{-t+,--field-separator=}'[specify field separator instead of non-blank to blank transition]:separator' + '(-k --key)'{-k+,--key=}'[specified start and end fields for key]:key field' +) + +_pick_variant -r variant gnu=GNU $OSTYPE --version +case $variant in + dragonfly*|netbsd*|openbsd*|freebsd*|gnu) + args+=( + '(-s --stable)'{-s,--stable}'[preserve original order of lines with the same key]' + ) + ;| + openbsd*|freebsd*|gnu) + args+=( + '(-c --check -C)-C[check whether input is sorted; do not sort]' + '(-z --zero-terminated)'{-z,--zero-terminated}'[end lines with 0 byte, not newline]' + ) + ;| + freebsd*|gnu) + args+=( + '(-c --check -C)--check=-[check whether input is sorted; do not sort]::bad line handling:(diagnose-first silent quiet)' + "$ordering"{-g,--general-numeric-sort}'[compare according to general numeric value]' + "$ordering"{-M,--month-sort}"[compare (unknown) < 'JAN' < ... < 'DEC']" + "$ordering"{-h,--human-numeric-sort}'[compare human readable numbers (e.g., 2K 1G)]' + "$ordering"{-R,--random-sort}'[sort by random hash of keys]' + "$ordering"{-V,--version-sort}'[sort version numbers]' + "$ordering--sort=[sort according to ordering]:ordering:(general-numeric human-numeric month numeric random version)" + '(-i --ignore-nonprinting)'{-i,--ignore-nonprinting}'[consider only printable characters]' + '--random-source=[get random bytes from file]:file:_files' + '--batch-size=[maximum inputs to merge]:number' + '--compress-program=[specify program to compress temporary files with]:program:(gzip bzip2 lzop xz)' + '--debug[annotate the of the line used to sort]' + '--files0-from=[read input files from file]:file:_files' + '(-S --buffer-size)'{-S+,--buffer-size=}'[specify size for main memory buffer]:size' + '(- *)--help[display help and exit]' + '(- *)--version[output version information and exit]' + ) + ;| + netbsd*|dragonfly*) + args+=( + "${ordering}-l[sort by string length of field]" + "(-s)-S[don't use stable sort" + ) + ;| + openbsd*) + args+=( + '-H[use a merge sort instead of a radix sort]' + '-R[specify record separator]:separator' + ) + ;| + gnu) + args+=( '--parallel=[set number of sorts run concurrently]:number' ) + ;; + freebsd*) + args+=( --radixsort --mergesort --qsort --heapsort --mmap ) + ;; + *) args=( "${(@)args:#(|\(*\))(|\*)--*}" ) ;; +esac + +_arguments -s -S $args '*:file:_files' |