$OpenBSD: patch-Completion_BSD_Command__bsd_pkg,v 1.5 2017/12/05 23:28:56 jca Exp $
Index: Completion/BSD/Command/_bsd_pkg
--- Completion/BSD/Command/_bsd_pkg.orig
+++ Completion/BSD/Command/_bsd_pkg
@@ -6,15 +6,19 @@ _bsd_pkg_pkgfiles() {
 
   case $OSTYPE in
   netbsd*)
-    portsdir=/usr/pkgsrc
+    portsdir=${PORTSDIR:-/usr/pkgsrc}
+    pkgsdir=${PACKAGES:-$portsdir/packages}/All
     ;;
+  openbsd*)
+    portsdir=${PORTSDIR:-/usr/ports}
+    pkgsdir=${PACKAGES:-$portsdir/packages}/$(arch -s)/All
+    ;;
   *)
     portsdir=${PORTSDIR:-/usr/ports}
+    pkgsdir=${PACKAGES:-$portsdir/packages}/All
     ;;
   esac
 
-  pkgsdir=${PACKAGES:-$portsdir/packages}/All
-
   paths=( "${(@)${(@s.:.)PKG_PATH}:#}" )
   _files "$@" -g '*.t[bg]z(-.)' && ret=0
   (( $#path )) && _files "$@" -W paths -g '*.t[bg]z(-.)' && ret=0
@@ -25,7 +29,7 @@ _bsd_pkg_pkgfiles() {
 
 (( $+functions[_bsd_pkg_pkgs] )) ||
 _bsd_pkg_pkgs() {
-  compadd "$@" - ${PKG_DBDIR:-/var/db/pkg}/*(/:t)
+  compadd "$@" - ${PKG_DBDIR:-/var/db/pkg}/*(-/:t)
 }
 
 (( $+functions[_bsd_pkg_pkgs_and_files] )) ||
@@ -157,14 +161,22 @@ _bsd_pkg() {
       ;;
     esac
 
-    _arguments -s \
-      $flags[@] \
-      '(-a)*:package name:_bsd_pkg_pkgs_and_files'
+    case "$OSTYPE" in
+    openbsd*)
+      _arguments -s \
+        $flags[@] \
+        '*:installed package name:_bsd_pkg_pkgs'
+      ;;
+    *)
+      _arguments -s \
+        $flags[@] \
+        '(-a)*:package name:_bsd_pkg_pkgs_and_files'
+      ;;
+    esac
     ;;
 
   pkg_info)
     flags=(
-      '(:)-a[show all installed packages]'
       '-c[show comment fields]'
       '-D[show install-message files]'
       '-d[show long descriptions]'
@@ -209,9 +221,20 @@ _bsd_pkg() {
       ;;
     esac
 
-    _arguments -s \
-      $flags[@] \
-      '(-a)*:package name:_bsd_pkg_pkgs_and_files'
+    case "$OSTYPE" in
+    openbsd*)
+      _arguments -s \
+        '(* -)-a[show all installed packages]' \
+        $flags[@] \
+        '*:installed package name:_bsd_pkg_pkgs'
+      ;;
+    *)
+      _arguments -s \
+        '(:)-a[show all installed packages]' \
+        $flags[@] \
+        '(-a)*:package name:_bsd_pkg_pkgs_and_files'
+      ;;
+    esac
     ;;
   esac
 }
