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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user