diff --git a/dot-config/zsh/interactive/direnv b/dot-config/zsh/interactive/direnv deleted file mode 100644 index ba862dc..0000000 --- a/dot-config/zsh/interactive/direnv +++ /dev/null @@ -1,12 +0,0 @@ -#! zsh -_direnv_hook() { - trap -- '' SIGINT - emulate zsh -c "$(direnv export zsh)" - trap - SIGINT -} - -typeset -ag precmd_functions chpwd_functions -if (( $+commands[direnv] )); then - [[ -z ${precmd_functions[(r)_direnv_hook]} ]] && precmd_functions+=(_direnv_hook) - [[ -z ${chpwd_functions[(r)_direnv_hook]} ]] && chpwd_functions+=(_direnv_hook) -fi diff --git a/dot-config/zsh/interactive/z b/dot-config/zsh/interactive/z deleted file mode 100644 index 351cea0..0000000 --- a/dot-config/zsh/interactive/z +++ /dev/null @@ -1,2 +0,0 @@ -#! zsh -eval "$(zoxide init zsh)" diff --git a/dot-config/zsh/zimrc.zsh b/dot-config/zsh/zimrc.zsh index 6cf6b27..8467ac1 100644 --- a/dot-config/zsh/zimrc.zsh +++ b/dot-config/zsh/zimrc.zsh @@ -1,3 +1,21 @@ +# Rather than writing eval "$(something init)" and having it called on every +# shell initialisation, zeval will use Zim's --on-pull hook to run the command +# once and cache the output, as well as zcompile it. Pass a descriptive, unique +# name as the first argument and the Zsh command you'd normally write inside +# $() as the second. For example, to hook Direnv into your shell: +# zeval direnv 'direnv hook zsh' +zeval() { + zmodule https://git.00dani.me/00dani/null --name zeval-$1 --on-pull "$2 >! init.zsh" +} + +# Hook a command into Zsh, only if that command is installed. Pass the +# command's name as the first argument and the commandline you want to evaluate +# as the second. Works in the same way as zeval, but silently omits the module +# from your setup if the necessary command is not installed. +zeval-if-installed() { + (( ${+commands[$1]} )) && zeval "$@" +} + zmodule willghatch/zsh-saneopt --source saneopt.plugin.zsh zmodule environment @@ -5,25 +23,30 @@ zmodule mafredri/zsh-async --source async.zsh zmodule input zmodule run-help -zmodule magic-enter zmodule termtitle zmodule utility zmodule romkatv/powerlevel10k --use degit -zmodule ryanccn/vivid-zsh --cmd 'vivid_theme=molokai source {}/vivid-zsh.plugin.zsh' --on-pull '(( ${+commands[vivid]} )) && ./build.sh' +zeval-if-installed vivid 'echo export LS_COLORS=${(qqq)"$(vivid generate molokai)"}' zmodule hlissner/zsh-autopair zmodule mollifier/cd-gitroot --fpath . --autoload cd-gitroot -zmodule kiesman99/zim-zoxide zmodule zsh-users/zsh-autosuggestions (( ${+commands[brew]} )) && zmodule homebrew +zeval-if-installed direnv 'direnv hook zsh' +zeval-if-installed scmpuff 'scmpuff init --shell=zsh' # Additional completion definitions for Zsh. zmodule zsh-users/zsh-completions --fpath src # Enables and configures smart and extensive tab completion. -# completion *must* be sourced after all modules that add completion definitions. +# completion *must* be sourced after all modules that add completion definitions to fpath. zmodule completion +# Initialise Zoxide after compinit, because it calls compdef if available. +zeval-if-installed zoxide 'zoxide init zsh' + # Fish-style syntax highlighting as you type, making the Zsh experience much more friendly! zmodule zdharma-continuum/fast-syntax-highlighting + +unfunction zeval zeval-if-installed