Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: _dpkg improvements
- X-seq: zsh-workers 11739
- From: Clint Adams <schizo@xxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: PATCH: _dpkg improvements
- Date: Sun, 4 Jun 2000 14:27:30 -0400
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
Since -l, -L, -s, -S, -r, -P, -i, and their long equivalents
can take multiple arguments, and are mutually exclusive,
this makes completion for dpkg a bit more logical, though zsh
will still complete invalid options.
Index: Completion/Debian/_dpkg
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Debian/_dpkg,v
retrieving revision 1.3
diff -u -r1.3 _dpkg
--- Completion/Debian/_dpkg 2000/04/05 11:28:09 1.3
+++ Completion/Debian/_dpkg 2000/06/04 18:16:26
@@ -1,6 +1,10 @@
#compdef dpkg dpkg-deb
-_dpkg_deb_args=('(--build)-b[build archive]:directory:_files -/' \
+local _dpkg_deb_actions _dpkg_common_actions _dpkg_actions _dpkg_options
+local curcontext="$curcontext" state line expl ret
+typeset -A opt_args
+
+_dpkg_deb_actions=('(--build)-b[build archive]:directory:_files -/' \
'(-b)--build:directory:_files -/' \
'(--contents)-c[list contents]:Debian package:_files -g \*.deb' \
'(-c)--contents:Debian package:_files -g \*.deb' \
@@ -16,45 +20,46 @@
'(-X)--vextract[extract and list]:Debian package:_files -g \*.deb' \
'--fsys-tarfile[output fs tarfile]:Debian package:_files -g \*.deb')
-_dpkg_common_args=('--help[show help]' \
+_dpkg_common_actions=('--help[show help]' \
'--version[show version]' \
- '--licence[show licensing]')
+ '(--license)--licence[show licencing]' \
+ '(--licence)--license[show licensing]')
-case "${words[1]:t}" in
-dpkg)
-_arguments -s '(--install)-i[install packages]:Debian package:_files -g \*.deb' \
- '(-i)--install:Debian package:_files -g \*.deb' \
+_dpkg_actions=('(--install)-i[install packages]:*:Debian packages:->install' \
+ '(-i)--install:*:Debian packages:->install' \
'--unpack[unpack package]:Debian package:_files -g \*.deb' \
- '(--record-avail)-A[record available]:package file:_files' \
- '(-A)--record-avail:package file:_files' \
'--configure:package:_deb_packages installed' \
- '(--remove)-r[remove package]:package:_deb_packages installed' \
- '(-r)--remove:package:_deb_packages installed' \
- '(--purge)-P[purge package]:package:_deb_packages installed' \
- '(-P)--purge:package:_deb_packages installed' \
- '--get-selections[get selections]:pattern:' \
- '--set-selections[set selections]' \
+ '(--remove)-r[remove package]:*:package:->remove' \
+ '(-r)--remove:*:package:->remove' \
+ '(--purge)-P[purge package]:*:package:->purge' \
+ '(-P)--purge:*:package:->purge' \
+ '(--print-avail)-p[display available details]:packages:_deb_packages avail' \
+ '(-p)--print-avail:packages:_deb_packages avail' \
'--update-avail[update available]:package file:_files' \
'--merge-avail[merge available]:package file:_files' \
- '--clear-avail[clear available]' \
+ '(--record-avail)-A[record available]:package file:_files' \
+ '(-A)--record-avail:package file:_files' \
'--forget-old-unavail[forget uninstalled unavailable]' \
- '(--status)-s[display package status]:packages:_deb_packages installed' \
- '(-s)--status:packages:_deb_packages installed' \
- '(--print-avail)-p[display available details]:packages:_deb_packages avail' \
- '(-p)--print-avail:packages:_deb_packages avail' \
- '(--listfiles)-L[list owned files]:packages:_deb_packages installed' \
- '(-L)--listfiles:packages:_deb_packages installed' \
- '(--list)-l[list packages]:packages:_deb_packages avail' \
- '(-l)--list:packages:_deb_packages avail' \
- '(--search)-S[search for file owner]:pattern:_files' \
- '(-S)--search:pattern:_files' \
+ '--clear-avail[clear available]' \
+ '(--list)-l[list packages]:*:packages:->list' \
+ '(-l)--list:*:packages:->list' \
+ '(--status)-s[display package status]:*:packages:->status' \
+ '(-s)--status:*:packages:->status' \
'(--audit)-C[check for broken pkgs]' \
'(-C)--audit' \
- '--abort-after[abort after errors]:number of errors:' \
+ '--get-selections[get selections]:pattern:' \
+ '--set-selections[set selections]' \
+ '--yet-to-unpack[list uninstalled]' \
+ '(--listfiles)-L[list owned files]:*:packages:->listfiles' \
+ '(-L)--listfiles:*:packages:->listfiles' \
+ '(--search)-S[search for file owner]:*:pattern:->search' \
+ '(-S)--search:*:pattern:->search' \
'--print-architecture[print target architecture]' \
'--print-gnu-build-architecture[print GNU version of target architecture]' \
'--print-installation-architecture[print host architecture]' \
- '--compare-versions[compare version numbers]:expression:' \
+ '--compare-versions[compare version numbers]:expression:')
+
+_dpkg_options=('--abort-after[abort after errors]:number of errors:' \
'--admindir=[data directory]:directory:_files -/' \
'--root=[alternative root]:root:_files -/' \
'--instdir=[change inst root but not data dir]:_files -/' \
@@ -72,15 +77,38 @@
'-D+[debug options]:debug options:(h 1 2 3)' \
'--debug=[debug options]:debug options:(help 1 2 3)' \
'--ignore-depends=[ignore depends involving package]:package:_deb_packages avail' \
- --{force,refuse,no-force}'--[forcing options]:what:(auto-select downgrade configure-any hold bad-path not-root overwrite overwrite-diverted depends-version depends confnew confold confdef confmiss conflicts architecture overwrite-dir remove-reinstreq remove-essential)' \
- "$_dpkg_deb_args[@]" \
- "$_dpkg_common_args[@]"
+ --{force,refuse,no-force}'--[forcing options]:what:(auto-select downgrade configure-any hold bad-path not-root overwrite overwrite-diverted depends-version depends confnew confold confdef confmiss conflicts architecture overwrite-dir remove-reinstreq remove-essential)')
+
+case "${words[1]:t}" in
+dpkg)
+_arguments -C -s "$_dpkg_actions[@]" \
+ "$_dpkg_deb_actions[@]" \
+ "$_dpkg_common_actions[@]" \
+ "$_dpkg_options[@]"
;;
dpkg-deb)
-_arguments "$_dpkg_deb_args[@]" \
- "$_dpkg_common_args[@]"
+_arguments "$_dpkg_deb_actions[@]" \
+ "$_dpkg_common_actions[@]"
;;
+esac
+
+case "$state" in
+ install)
+ _funcall ret _dpkg_$state && return ret
+ _arguments -C -s "$_dpkg_options[@]" \
+ '*:Debian package:_files -g \*.deb'
+;;
+ remove|purge|status|listfiles)
+ _funcall ret _dpkg_$state && return ret
+ _arguments -C -s "$_dpkg_options[@]" \
+ '*:package:_deb_packages installed'
+;;
+ list)
+ _funcall ret _dpkg_$state && return ret
+ _arguments -C -s "$_dpkg_options[@]" \
+ '*:packages:_deb_packages avail' \
+;;
esac
Messages sorted by:
Reverse Date,
Date,
Thread,
Author