diff --git a/src/_port b/src/_port index 11e91dd..064928a 100644 --- a/src/_port +++ b/src/_port @@ -70,6 +70,12 @@ _port() { '*:extra:->extra' \ && return 0 + local cache_policy + zstyle -s ":completion:${curcontext}:" cache-policy cache_policy + if [[ -z "$cache_policy" ]]; then + zstyle ":completion:${curcontext}:" cache-policy _port_caching_policy + fi + case "$state" in extra) case "$words[2]" in @@ -133,4 +139,11 @@ _port_select() { fi } +_port_caching_policy() { + local reg_time comp_time + reg_time=$(stat -c '%Z' $port_prefix/var/macports/registry/registry.db) + comp_time=$(stat -c '%Z' $1) + return $(( reg_time < comp_time )) +} + _port "$@"