summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r--Completion/Unix/Command/_zip13
1 files changed, 9 insertions, 4 deletions
diff --git a/Completion/Unix/Command/_zip b/Completion/Unix/Command/_zip
index b01b756af..b8117c7b4 100644
--- a/Completion/Unix/Command/_zip
+++ b/Completion/Unix/Command/_zip
@@ -1,6 +1,6 @@
#compdef zip unzip zipinfo
-local suffixes suf zipfile izip
+local suffixes suf zipfile izip uzi
local expl curcontext="$curcontext" state line
typeset -A opt_args
@@ -73,11 +73,17 @@ case $service in
'(-p -z)-L[lowercase (some) filenames]' \
'-M[page output]' \
'-x[exclude the following names]' \
+ '-Z[zipinfo mode]:zipinfomode:->zipinfo' \
"(-p -f -u -l -t -z -n -o -j -C -X -q -qq -a -aa -v -L -M)1:zip file:_files -g '(#i)*.(zip|[jw]ar)'" \
'*:file:->files' && return 0
;;
- zipinfo)
+esac
+
+[[ $state == zipinfo ]] && uzi="-Z[zipinfo mode]"
+
+if [[ $service == zipinfo ]] || [[ -n $uzi ]]; then
_arguments -C -s \
+ $uzi \
'(-2 -s -m -l -v -h -t -T -z)-1[filenames only]' \
'(-1 -s -m -l -v -T)-2[just filenames but allow -h/-t/-z]' \
'(-1 -2 -m -l -v -h -t)-s[short format]' \
@@ -93,8 +99,7 @@ case $service in
'-x[exclude the following names]' \
"(-1 -2 -s -m -l -v -h -z -C -t -T -M)1:zip file:_files -g '(#i)*.(zip|[jw]ar)'" \
'*:file:->files' && return 0
- ;;
-esac
+fi
case $state in
suffixes)