about summary refs log tree commit diff
path: root/Completion/Unix/Command/_tr
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2015-10-31 19:14:36 +0100
committerOliver Kiddle <opk@zsh.org>2015-10-31 19:14:36 +0100
commitfa59375e36e1718e060048ba7efd7346b3c8e94a (patch)
tree217f4c0133da5ebb0be1dae23962653cbdb59f16 /Completion/Unix/Command/_tr
parent098319df9922441ca70c233195151cb1965556a8 (diff)
downloadzsh-fa59375e36e1718e060048ba7efd7346b3c8e94a.tar.gz
zsh-fa59375e36e1718e060048ba7efd7346b3c8e94a.tar.xz
zsh-fa59375e36e1718e060048ba7efd7346b3c8e94a.zip
37029: update options and new tr completion
Diffstat (limited to 'Completion/Unix/Command/_tr')
-rw-r--r--Completion/Unix/Command/_tr53
1 files changed, 53 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_tr b/Completion/Unix/Command/_tr
new file mode 100644
index 000000000..d55fab5ff
--- /dev/null
+++ b/Completion/Unix/Command/_tr
@@ -0,0 +1,53 @@
+#compdef tr
+
+local curcontext="$curcontext" state line expl ret=1
+local args variant
+local -A descr
+descr=(
+  -c '[complement characters specified by first string]'
+  -d '[delete specified characters from input]'
+  -s '[squeeze repeated instances of character to a single instance]'
+)
+
+_pick_variant -r variant gnu=GNU $OSTYPE --version
+case $variant in
+  gnu)
+    args=(
+      '(-c -C --complement)'{-c,-C,--complement}"${descr[-c]}"
+      '(-d --delete 2)'{-d,--delete}"${descr[-d]}"
+      '(-s --squeeze-repeats)'{-s,--squeeze-repeats}"${descr[-s]}"
+      '(- 1 2)--help[display help information]'
+      '(- 1 2)--version[display version information]'
+    )
+  ;;
+  darwin*|dragonfly*|*bsd*)
+    args+=( "(-c)-C$descr[-c]" )
+  ;|
+  darwin*|dragonfly*|freebsd*)
+    args+=( '-u[guarantee that output is unbuffered]' )
+  ;|
+  *)
+    for k in c d s; do
+      args+=( -$k$descr[$k] )
+    done
+  ;;
+esac
+
+_arguments -C -s $args \
+  '1:character set:->chsets' \
+  '2:character set:->chsets' && ret=0
+
+if [[ -n $state ]]; then
+  if compset -P '*\[:'; then
+    _wanted characters expl 'character class' \
+        compadd -S ":${${QIPREFIX:+]}:-\]}$compstate[quote] " \
+	alnum alpha blank cntrl digit graph lower print punct space upper \
+	xdigit && return
+  elif compset -P '*\\'; then
+    _describe -t characters character \
+        '(\\\\:backslash a:alert b:backspace f:form\ feed n:new\ line r:return t:tab v:vertical\ tab)' -S '' && return
+  fi
+  _message -e characters 'character set'
+fi
+
+return ret