summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command/_sort
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2015-05-03 16:53:47 +0200
committerOliver Kiddle <opk@zsh.org>2015-05-03 16:53:57 +0200
commitab7ec8d9851fea8230e1ccfba284c5bfaf457d88 (patch)
tree837b14c838b96728ebdb530eb20d35737ef8419b /Completion/Unix/Command/_sort
parent35009: updates for 5.0.8 (diff)
downloadzsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.gz
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.bz2
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.lz
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.xz
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.zst
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/_sort107
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'