summary refs log tree commit diff stats
path: root/hooks/post-up/zsh
diff options
context:
space:
mode:
Diffstat (limited to 'hooks/post-up/zsh')
-rwxr-xr-xhooks/post-up/zsh34
1 files changed, 34 insertions, 0 deletions
diff --git a/hooks/post-up/zsh b/hooks/post-up/zsh
new file mode 100755
index 00000000..f964e2bd
--- /dev/null
+++ b/hooks/post-up/zsh
@@ -0,0 +1,34 @@
+#!/usr/bin/env zsh
+ZDOTDIR="${XDG_CONFIG_HOME:~/.config}/zsh"
+
+if [[ ! -d ~/.zsh/cache ]]
+then
+	mkdir -p ~/.zsh/cache
+fi
+
+fasd_cache=~/.zsh/cache/fasd-init-zsh
+if [[ ! -s "$fasd_cache" || $ZDOTDIR/functions/fasd/fasd -nt "$fasd_cache" ]]; then
+	$ZDOTDIR/functions/fasd/fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install >! "$fasd_cache"
+fi
+
+autoload -U zrecompile
+local -a zfiles
+zfiles=(
+	$ZDOTDIR/functions/fasd/fasd
+	$fasd_cache
+	$ZDOTDIR/zshrc
+)
+
+if [[ -f $ZDOTDIR/${HOST%%.*}.zsh ]]; then
+	zfiles+=$ZDOTDIR/${HOST%%.*}.zsh
+fi
+if [[ $OSTYPE == freebsd* ]]; then
+	zfiles+=$ZDOTDIR/freebsd.zsh
+fi
+
+zrecompile -p -R $ZDOTDIR/.zshrc.zwc $zfiles -- \
+	-M .zsh/cache/compdump
+
+for fp in $ZDOTDIR/functions/*(/); do
+	zrecompile -p $fp $fp/*
+done