Compile modules before sourcing them

Add functions comp-conf and comp-source heavily inspired by romkatvs
jit & jit-source.
Replace every call to source with comp-source.
Remove existence check since it is done in comp-source.
Replace still existing readable checks with existence checks.
This commit is contained in:
2020-06-28 18:25:28 +02:00
parent 4253ba633b
commit a06182153c

View File

@@ -13,6 +13,25 @@ fi
export ZSH_CONF="$ZDOTDIR/plugins" export ZSH_CONF="$ZDOTDIR/plugins"
# https://github.com/romkatv/dotfiles-public/blob/7e49fc4fb71d/.zshrc#L35
comp-conf() {
emulate -L zsh
[ ! "$1.zwc" -nt "$1" ] && [ -w "${1:h}" ] || return 0
zmodload -F zsh/files b:zf_mv b:zf_rm
local tmp="$1.tmp.$$.zwc"
{
zcompile -R -- "$tmp" "$1" && zf_mv -f -- "$tmp" "$1.zwc" || return 1
} always {
(( ! $? )) || zf_rm -f -- "$tmp"
}
}
# https://github.com/romkatv/dotfiles-public/blob/7e49fc4fb71d/.zshrc#L47
comp-source() {
emulate -L zsh
[ -e "$1" ] && comp-conf "$1" && source -- "$1"
}
## set zshoptions ## set zshoptions
# setopt AUTO_CD # cd is not necessary # setopt AUTO_CD # cd is not necessary
setopt AUTO_CONTINUE # Stopped jobs with 'disown' are automatically sent a CONT signal to make them running. setopt AUTO_CONTINUE # Stopped jobs with 'disown' are automatically sent a CONT signal to make them running.
@@ -45,16 +64,16 @@ export ZSH_CONF="$ZDOTDIR/plugins"
## Setup the prompt ## Setup the prompt
# use bright version of colors when printing bold # use bright version of colors when printing bold
if [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors" ]; then if [ -e "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors" ]; then
eval "$(dircolors -b "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors")" eval "$(dircolors -b "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors")"
else else
eval "$(dircolors -b)" eval "$(dircolors -b)"
fi fi
if [ -r "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme" ]; then if [ -e "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme" ]; then
source "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme" comp-source "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme"
# run `p10k configure` or edit $ZSH_CONF/p10k.zsh-theme to customize # To customize prompt, run `p10k configure` or edit $ZSH_CONF/p10k.zsh-theme.
[ ! -r "$ZSH_CONF/p10k.zsh-theme" ] || source "$ZSH_CONF/p10k.zsh-theme" comp-source "$ZSH_CONF/p10k.zsh-theme"
fi fi
## Setup zsh completion system ## Setup zsh completion system
@@ -90,32 +109,32 @@ export ZSH_CONF="$ZDOTDIR/plugins"
autoload edit-command-line; zle -N edit-command-line autoload edit-command-line; zle -N edit-command-line
autoload zmv autoload zmv
# stderred # stderred
if [ -r "$ZSH_CONF/stderred/build/libstderred.so" ]; then if [ -e "$ZSH_CONF/stderred/build/libstderred.so" ]; then
export LD_PRELOAD="$ZSH_CONF/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}" export LD_PRELOAD="$ZSH_CONF/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
export STDERRED_ESC_CODE="$(tput bold && tput setaf 1)" export STDERRED_ESC_CODE="$(tput bold && tput setaf 1)"
export STDERRED_BLACKLIST="^(git|curl|wget|swipl)$" export STDERRED_BLACKLIST="^(git|curl|wget|swipl)$"
fi fi
[ ! -r "$ZSH_CONF/functionsPre.zsh" ] || source "$ZSH_CONF/functionsPre.zsh" comp-source "$ZSH_CONF/functionsPre.zsh"
[ ! -r "$ZSH_CONF/alias.zsh" ] || source "$ZSH_CONF/alias.zsh" comp-source "$ZSH_CONF/alias.zsh"
[ ! -r "$ZSH_CONF/functionsPost.zsh" ] || source "$ZSH_CONF/functionsPost.zsh" comp-source "$ZSH_CONF/functionsPost.zsh"
[ ! -r "$ZSH_CONF/transfer.zsh" ] || source "$ZSH_CONF/transfer.zsh" comp-source "$ZSH_CONF/transfer.zsh"
[ ! -r "$ZSH_CONF/zsh-autosuggestions/zsh-autosuggestions.zsh" ] || source "$ZSH_CONF/zsh-autosuggestions/zsh-autosuggestions.zsh" comp-source "$ZSH_CONF/zsh-autosuggestions/zsh-autosuggestions.zsh"
[ ! -r "$ZSH_CONF/completion.zsh" ] || source "$ZSH_CONF/completion.zsh" comp-source "$ZSH_CONF/completion.zsh"
# [ ! -r "$ZSH_CONF/zsh-async/async.zsh" ] || source "$ZSH_CONF/zsh-async/async.zsh" # comp-source "$ZSH_CONF/zsh-async/async.zsh"
# async_init # async_init
### syntax-highlight > history-substring > keys ### syntax-highlight > history-substring > keys
# syntax highlighting # syntax highlighting
if [ -r "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]; then if [ -e "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]; then
source $ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh comp-source "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
source $ZSH_CONF/zsh-syntax-highlighting.zsh-theme comp-source "$ZSH_CONF/zsh-syntax-highlighting.zsh-theme"
fi fi
# history substr search # history substr search
if [ -r "$ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh" ]; then if [ -e "$ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh" ]; then
source $ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh comp-source "$ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh"
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=true HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=true
HISTORY_SUBSTRING_SEARCH_FUZZY=true HISTORY_SUBSTRING_SEARCH_FUZZY=true
fi fi
[ ! -r "$ZSH_CONF/keys.zsh" ] || source "$ZSH_CONF/keys.zsh" comp-source "$ZSH_CONF/keys.zsh"
## Env variables that have nothing to do with zsh ## Env variables that have nothing to do with zsh
export EDITOR=nvim export EDITOR=nvim