Control: tags 962133 patch Control: tags 962135 patch I've attached a patch for Debian bugs 962133 ("dpkg -s" completion) and 962135 ("dpkg -l" completion), which also fixes "dpkg --remove" and "dpkg --purge" completions. I've added a note about that:
# Note: Packages may be marked as "deinstall" or "purge", i.e. selected # for deinstallation or to be purged (see dpkg(1) man page); this means # that the operation has not been completed yet. In the meantime, such # packages may still be installed (if marked as purge, one is not sure, # though, as the package could have been uninstalled but not purged yet), # so that purge and remove operations remain valid. Basically, the fix consists of the _dpkg change. My patch also removes "deinstalled" from _deb_packages as it does not seem to be used (and should be useless). -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
diff -aurd compl-debian-deb/_deb_packages compl-debian-fix/_deb_packages --- compl-debian-deb/_deb_packages 2020-03-22 15:12:25.000000000 +0000 +++ compl-debian-fix/_deb_packages 2020-06-03 17:09:43.704256786 +0000 @@ -1,6 +1,6 @@ #autoload -# Usage: _deb_packages expl... (installed|deinstalled|xinstalled|held|uninstalled|avail|available|source) +# Usage: _deb_packages expl... (installed|xinstalled|held|uninstalled|avail|available|source) _deb_packages_update_avail () { if ( [[ ${+_deb_packages_cache_avail} -eq 0 ]] || @@ -41,19 +41,6 @@ cachevar=_deb_packages_cache_held } -_deb_packages_update_deinstalled () { - if ( [[ ${+_deb_packages_cache_deinstalled} -eq 0 ]] || - _cache_invalid DEBS_deinstalled ) && ! _retrieve_cache DEBS_deinstalled; - then - _deb_packages_cache_deinstalled=() - dpkg --get-selections | while read package state ; do - [[ $state = deinstall ]] && _deb_packages_cache_deinstalled+=$package - done - _store_cache DEBS_deinstalled _deb_packages_cache_deinstalled - fi - cachevar=_deb_packages_cache_deinstalled -} - _deb_packages_update_xinstalled () { if ( [[ ${+_deb_packages_cache_xinstalled} -eq 0 ]] || _cache_invalid DEBS_xinstalled ) && ! _retrieve_cache DEBS_xinstalled; @@ -103,14 +90,14 @@ zstyle ":completion:*:*:$service:*" cache-policy _debs_caching_policy fi - [[ "$command" = (installed|deinstalled|xinstalled|held|uninstalled|avail|available|source) ]] || { + [[ "$command" = (installed|xinstalled|held|uninstalled|avail|available|source) ]] || { _message "unknown command: $command" return } zstyle -s ":completion:${curcontext}:" packageset pkgset - [[ "$pkgset" = (installed|deinstalled|xinstalled|held|uninstalled|avail|available|source) ]] || { + [[ "$pkgset" = (installed|xinstalled|held|uninstalled|avail|available|source) ]] || { pkgset="$command" } diff -aurd compl-debian-deb/_dpkg compl-debian-fix/_dpkg --- compl-debian-deb/_dpkg 2020-03-22 15:12:25.000000000 +0000 +++ compl-debian-fix/_dpkg 2020-06-03 17:24:33.866990607 +0000 @@ -149,21 +149,17 @@ - nonrecur \ '*: :_deb_files' ;; - remove|status|listfiles) - _call_function ret _dpkg_$state && return ret - _arguments -C -A "-*" -s "$_dpkg_options[@]" \ - '*:package:_deb_packages installed' - ;; - purge) +# Note: Packages may be marked as "deinstall" or "purge", i.e. selected +# for deinstallation or to be purged (see dpkg(1) man page); this means +# that the operation has not been completed yet. In the meantime, such +# packages may still be installed (if marked as purge, one is not sure, +# though, as the package could have been uninstalled but not purged yet), +# so that purge and remove operations remain valid. + list|listfiles|purge|remove|status) _call_function ret _dpkg_$state && return ret _arguments -C -A "-*" -s "$_dpkg_options[@]" \ '*:package:_deb_packages xinstalled' ;; - list) - _call_function ret _dpkg_$state && return ret - _arguments -C -A "-*" -s "$_dpkg_options[@]" \ - '*:packages:_deb_packages avail' - ;; compare_versions) _call_function ret _dpkg_$state && return ret _arguments -C -A "-*" -s \