summaryrefslogtreecommitdiff
path: root/Completion/Base/Utility
diff options
context:
space:
mode:
authorAxel Beckert <abe@deuxchevaux.org>2015-06-02 00:41:20 +0200
committerAxel Beckert <abe@deuxchevaux.org>2015-06-02 00:41:20 +0200
commit752cbfd48ab774e3de0ecf49543fe748a03406df (patch)
treea78726bf01b008c9b60f84257210b45870da09dd /Completion/Base/Utility
parent8b373331f539bedc68aa74b1fe0472151f1bea68 (diff)
parentf0068edb4888a4d8fe94defa9c7affaa15e917c9 (diff)
downloadzsh-752cbfd48ab774e3de0ecf49543fe748a03406df.tar.gz
zsh-752cbfd48ab774e3de0ecf49543fe748a03406df.zip
New upstream release: Merge tag 'zsh-5.0.8' / branch 'upstream' into 'debian'.
Diffstat (limited to 'Completion/Base/Utility')
-rw-r--r--Completion/Base/Utility/_store_cache11
1 files changed, 9 insertions, 2 deletions
diff --git a/Completion/Base/Utility/_store_cache b/Completion/Base/Utility/_store_cache
index 86e72e9a9..fb2ab328a 100644
--- a/Completion/Base/Utility/_store_cache
+++ b/Completion/Base/Utility/_store_cache
@@ -46,8 +46,15 @@ if zstyle -t ":completion:${curcontext}:" use-cache; then
for var; do
case ${(Pt)var} in
(*readonly*) ;;
- (*(association|array)*) print -r "$var=( ${(kv@Pqq)^^var} )";;
- (*) print -r "$var=${(Pqq)^^var}";;
+ (*(association|array)*)
+ # Dump the array as a here-document to reduce parsing overhead
+ # when reloading the cache with "source" from _retrieve_cache
+ print -r "$var=( "'${(Q)"${(z)$(<<\EO:'"$var"
+ print -r "${(kv@Pqq)^^var}"
+ print -r "EO:$var"
+ print -r ')}"} )'
+ ;;
+ (*) print -r "$var=${(Pqq)^^var}";;
esac
done >! "$_cache_dir/$_cache_ident"
else