summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rw-r--r--etc/completions/_pkg15
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