Browse Source

core: refresh zcompdump cache file in init script (#8878)

Marc Cornellà 4 years ago
parent
commit
dd1a72696f
1 changed files with 19 additions and 0 deletions
  1. 19 0
      oh-my-zsh.sh

+ 19 - 0
oh-my-zsh.sh

@@ -61,6 +61,18 @@ if [ -z "$ZSH_COMPDUMP" ]; then
   ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
 fi
 
+# Construct zcompdump OMZ metadata
+zcompdump_metadata="\
+#omz revision: $(cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)
+#omz fpath: $fpath\
+"
+
+# Delete the zcompdump file if OMZ zcompdump metadata changed
+if ! cmp -s <(command grep '^#omz' "$ZSH_COMPDUMP" 2>/dev/null) <<< "$zcompdump_metadata"; then
+  command rm -f "$ZSH_COMPDUMP"
+  zcompdump_refresh=1
+fi
+
 if [[ $ZSH_DISABLE_COMPFIX != true ]]; then
   source $ZSH/lib/compfix.zsh
   # If completion insecurities exist, warn the user
@@ -72,6 +84,13 @@ else
   compinit -u -C -d "${ZSH_COMPDUMP}"
 fi
 
+# Append zcompdump metadata if missing
+if (( $zcompdump_refresh )); then
+  echo "\n$zcompdump_metadata" >>! "$ZSH_COMPDUMP"
+fi
+
+unset zcompdump_metadata zcompdump_refresh
+
 
 # Load all of the config files in ~/oh-my-zsh that end in .zsh
 # TIP: Add files you don't want in git to .gitignore