about summary refs log tree commit diff
path: root/Completion/Unix/Command/_unexpand
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2017-10-11 01:23:56 +0200
committerOliver Kiddle <opk@zsh.org>2017-10-11 01:23:56 +0200
commit1a3a07a35f0bea5774297ccf2ab4ddd9b525fc94 (patch)
tree303b14bcc74de299cfee750b3811e3c0d7b6e571 /Completion/Unix/Command/_unexpand
parent04a7dca3b0aa7659846e66415a2021b1562492f5 (diff)
downloadzsh-1a3a07a35f0bea5774297ccf2ab4ddd9b525fc94.tar.gz
zsh-1a3a07a35f0bea5774297ccf2ab4ddd9b525fc94.tar.xz
zsh-1a3a07a35f0bea5774297ccf2ab4ddd9b525fc94.zip
41849: handle both unexpand and expand in a single function
They have some commonalities and using _unexpand dodges around
the clash with the _expand completer.
Diffstat (limited to 'Completion/Unix/Command/_unexpand')
-rw-r--r--Completion/Unix/Command/_unexpand37
1 files changed, 22 insertions, 15 deletions
diff --git a/Completion/Unix/Command/_unexpand b/Completion/Unix/Command/_unexpand
index d9793ea70..13f6ce835 100644
--- a/Completion/Unix/Command/_unexpand
+++ b/Completion/Unix/Command/_unexpand
@@ -1,26 +1,33 @@
-#compdef unexpand gunexpand
+#compdef unexpand gunexpand expand gexpand
 
-local all tabs ret=1
+local all tabs
 local -a args
 
 all="convert all whitespace, instead of just initial whitespace"
-tabs="use comma separated list of tab positions"
-args=( 
-  "(--all)-a[$all]"
-  "(--tabs)-t+[$tabs]:tablist"
-  '*:file:_files'
-)
+tabs="[use comma separated list of tab positions]:list of tab positions"
 
 if _pick_variant gnu="Free Soft" unix --version; then
+  if [[ $service = *un* ]]; then
+    args=(
+      "(-a --help --version)--all[$all]"
+      '(--help --version)--first-only[convert only leading sequences of whitespace]'
+    )
+  else
+    args=(
+      '(-i --initial --help --version)'{-i,--initial}"[don't convert tabs after non blanks]"
+    )
+  fi
+
   args+=(
-    "(-a)--all[$all]"
-    '--first-only[convert only leading sequences of whitespace]'
-    "(-t)--tabs=[$tabs]:tablist"
+    "(-t --help --version)--tabs=${tabs}"
     '(* -)--help[display usage information]'
-    '(* -)--version[output version information]'
+    '(* -)--version[display version information]'
   )
+elif [[ $OSTYPE = (*bsd*|dragonfly*|darwin*) ]]; then
+  args=( -A "-*" )
 fi
+[[ $service = *un* ]] && args+=(  "(--all --help --version)-a[$all]" )
 
-_arguments -s -S "$args[@]" && ret=0
-
-return ret
+_arguments -s -S "$args[@]" \
+  "(--tabs --help)-t+${tabs}" \
+  '*:file:_files'