diff --git a/share/functions/__fish_print_packages.fish b/share/functions/__fish_print_packages.fish index 6809039fb..7e591ba3d 100644 --- a/share/functions/__fish_print_packages.fish +++ b/share/functions/__fish_print_packages.fish @@ -27,14 +27,20 @@ function __fish_print_packages # Pkg is fast on FreeBSD and provides versioning info which we want for # installed packages - if begin - type -q -f pkg - and test (uname) = "FreeBSD" - end + if type -q -f pkg pkg query "%n-%v" return end + # pkg_info on OpenBSD provides versioning info which we want for + # installed packages but, calling it directly can cause delays in + # returning information if another pkg_* tool have a lock. + # Listing /var/db/pkg is a clean alternative. + if type -q -f pkg_add + set -l files /var/db/pkg/*; string replace '/var/db/pkg/' '' -- $files + return + end + # Caches for 5 minutes if type -q -f pacman set cache_file $XDG_CACHE_HOME/.pac-cache.$USER