diff options
-rw-r--r-- | etc/completions/_pkg | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/etc/completions/_pkg b/etc/completions/_pkg index acd79d4..8a621a6 100644 --- a/etc/completions/_pkg +++ b/etc/completions/_pkg @@ -8,23 +8,28 @@ local arguments_action arguments_list arguments_listall local all installed -all=(pkg list-all) -installed=(pkg list) +all='pkg list-all' +installed='pkg list' +notinstalled='diff <(eval $installed) <(eval $all) | grep "^>" | cut -d " " -f 2' arguments_action=( '1:action:(add install changelog changeroot check delete remove info list list-all local-update log push remote-update status update upgrade)' ) arguments_list=( - '2:package:($($installed))' + '2:package:($(eval $installed))' ) arguments_listall=( - '2:package:($($all))' + '2:package:($(eval $all))' +) +arguments_notinstalled=( + '2:package:($(eval $notinstalled))' ) if [[ $CURRENT -ge 3 ]] { case ${words[2]} in changelog|check|delete|log|push|remove|status|upgrade) _arguments -s $arguments_list ;; - add|info|install) _arguments -s $arguments_listall ;; + info) _arguments -s $arguments_listall ;; + add|install) _arguments -s $arguments_notinstalled ;; esac } else { _arguments -s $arguments_action |