From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3570 invoked from network); 6 Jun 2000 16:29:09 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 6 Jun 2000 16:29:08 -0000 Received: (qmail 3726 invoked by alias); 6 Jun 2000 16:29:00 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 11782 Received: (qmail 3719 invoked from network); 6 Jun 2000 16:28:58 -0000 Date: Tue, 6 Jun 2000 12:25:09 -0400 From: Clint Adams To: zsh-workers@sunsite.auc.dk Subject: a couple of completion questions Message-ID: <20000606122509.A1169@scowler.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii User-Agent: Mutt/1.0.1i Included at the bottom of this message is my current working copy of _dpkg. Firstly, is there a simple way to change the _arguments for remove|purge|status|listfiles in the state switch to use -A without factoring out each case and adding the appropriate options? My second question has now been invalidated, so I'll substitute these two thoughts: it would be nice if -iR engaged the state engine in the same way -i -R or -R -i does; and also, the call to _arguments used in the state switch for install/record_avail does not behave as described in zshcompsys(1), though I'm taking advantage of that. #compdef dpkg dpkg-deb local _dpkg_deb_actions _dpkg_common_actions _dpkg_actions _dpkg_options local _dpkg_options_recursive local curcontext="$curcontext" context state line expl ret _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' \ '(--info)-I[show info]:Debian package:_files -g \*.deb' \ '(-I)--info:Debian package:_files -g \*.deb' \ '(--field)-f[show fields]:Debian package:_files -g \*.deb' \ '(-f)--field:Debian package:_files -g \*.deb' \ '(--control)-e[extract control]:Debian package:_files -g \*.deb' \ '(-e)--control:Debian package:_files -g \*.deb' \ '(--extract)-x[extract files]:Debian package:_files -g \*.deb' \ '(-x)--extract:Debian package:_files -g \*.deb' \ '(--vextract)-X[extract and list files]:Debian package:_files -g \*.deb' \ '(-X)--vextract[extract and list]:Debian package:_files -g \*.deb' \ '--fsys-tarfile[output fs tarfile]:Debian package:_files -g \*.deb') _dpkg_common_actions=('--help[show help]' \ '--version[show version]' \ '(--license)--licence[show licencing]' \ '(--licence)--license[show licensing]') _dpkg_actions=('(--install)-i[install packages]:*:Debian packages:->install' \ '(-i)--install:*:Debian packages:->install' \ '--unpack[unpack package]:Debian package:_files -g \*.deb' \ '--configure:*:package:->configure' \ '(--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' \ '(--record-avail)-A[record available]:*:package files:->record_avail' \ '(-A)--record-avail:*:package files:->record_avail' \ '--forget-old-unavail[forget uninstalled unavailable]' \ '--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' \ '--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') _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 -/' \ '(--selected-only)-O[skip unselected packages]' \ '(-O)--selected-only' \ '(--skip-same-version)-E[skip packages with same version as installed]' \ '(-E)--skip-same-version' \ '(--refuse-downgrade)-G[skip packages with earlier version than installed]' \ '(-G)--refuse-downgrade' \ '(--auto-deconfigure)-B[install can break other packages]' \ '(-B)--auto-deconfigure' \ '--largemem[optimize for >4Mb RAM]' \ '--smallmem[optimize for <4Mb RAM]' \ '--no-act[show potential actions but do not follow through]' \ '-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_options_recursive=('(--recursive)-R[recursive]' '(-R)--recursive') case "${words[1]:t}" in dpkg) _arguments -C -s "$_dpkg_actions[@]" \ "$_dpkg_deb_actions[@]" \ "$_dpkg_common_actions[@]" \ "$_dpkg_options[@]" \ "$_dpkg_options_recursive[@]" ;; dpkg-deb) _arguments "$_dpkg_deb_actions[@]" \ "$_dpkg_common_actions[@]" ;; esac case "$state" in install) _funcall ret _dpkg_$state && return ret _arguments -A -C -s '(--install)-i[install packages]' \ '(-i)--install' \ "$_dpkg_options[@]" \ - recur \ '(--recursive)-R[recursive]' \ '(-R)--recursive' \ ':directory:_files -/' \ - nonrecur \ ':Debian package:_files -g \*.deb' \ ;; record_avail) _funcall ret _dpkg_$state && return ret _arguments -A -C -s '(--record-avail)-A[record available]' \ '(-A)--record-avail' \ "$_dpkg_options[@]" \ - recur \ '(--recursive)-R[recursive]' \ '(-R)--recursive' \ ':directory:_files -/' \ - nonrecur \ ':Debian package:_files -g \*.deb' \ ;; remove|purge|status|listfiles) _funcall ret _dpkg_$state && return ret _arguments -A -C -s "$_dpkg_options[@]" \ '*:package:_deb_packages installed' ;; list) _funcall ret _dpkg_$state && return ret _arguments -A -C -s "$_dpkg_options[@]" \ '*:packages:_deb_packages avail' \ ;; compare_versions) _funcall ret _dpkg_$state && return ret _arguments -A -C -s "$_dpkg_options[@]" \ '2:version A:' \ '3:operator:(lt le eq ne ge gt lt-nl le-nl ge-nl gt-nl)' \ '4:version B:' ;; configure) _funcall ret _dpkg_$state && return ret _arguments -A -C -s '--configure' \ "$_dpkg_options[@]" \ '(--pending)-a[pending packages]' \ '(-a)--pending' \ '*:package:_deb_packages installed' \ ;; esac