#!/bin/zsh # path -> settings -> alias -> functions -> plugins -> prompt if [ ! -n "${ZSH_VERSION}" ]; then echo "Unsupported shell" return 1 fi # get the dir name that current file in function get_current_dir_name { _source="${(%):-%x}" _path=$(dirname "$(realpath "$_source")") echo $_path } # Set basic path to zsh-polyjuice installation export ZSH_POLYJUICE_PATH=$(get_current_dir_name) export ZSH_POLYJUICE_PLUGINS_PATH="$ZSH_POLYJUICE_PATH/plugins" export ZSH_POLYJUICE_ALIAS_PATH="$ZSH_POLYJUICE_PATH/alias" export ZSH_POLYJUICE_SETTINGS_PATH="$ZSH_POLYJUICE_PATH/settings" export ZSH_POLYJUICE_FUNCTIONS_PATH="$ZSH_POLYJUICE_PATH/functions" export ZSH_POLYJUICE_STARSHIP_CONFIG_FILE="$ZSH_POLYJUICE_PATH/../starship/starship_default.toml" export ZSH_POLYJUICE_HELIX_CONFIG_FILE="$ZSH_POLYJUICE_PATH/../helix/config.toml" # Load basic settings `zsh/settings` for _file in "$ZSH_POLYJUICE_SETTINGS_PATH"/*.sh; do source "$_file" done unset _file # Load Aliases `zsh/alias` for _file in "$ZSH_POLYJUICE_ALIAS_PATH"/*.sh; do source "$_file" done unset _file # Load self-defined functions for _file in "$ZSH_POLYJUICE_FUNCTIONS_PATH"/*.sh; do source "$_file" done unset _file # macOS configuration if [[ $OS == "Darwin" ]]; then # Load Plugins if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autocomplete/zsh-autocomplete.plugin.zsh ]]; then zstyle ':autocomplete:async' enabled no source $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autocomplete/zsh-autocomplete.plugin.zsh fi if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/fzf-tab/fzf-tab.plugin.zsh ]]; then source $ZSH_POLYJUICE_PLUGINS_PATH/fzf-tab/fzf-tab.plugin.zsh # should load before autosuggestions/syntax-highlighting fi if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh ]]; then source $ZSH_POLYJUICE_PLUGINS_PATH/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh fi if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then ZSH_AUTOSUGGEST_STRATEGY=(history) ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20 ZSH_AUTOSUGGEST_MANUAL_REBIND=1 source $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh unset ZSH_AUTOSUGGEST_USE_ASYNC _zsh_autosuggest_bind_widgets bindkey '^[l' autosuggest-accept # alt-L to accept autosuggestion fi else # Load Plugins if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autocomplete/zsh-autocomplete.plugin.zsh ]]; then source $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autocomplete/zsh-autocomplete.plugin.zsh fi if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/fzf-tab/fzf-tab.plugin.zsh ]]; then source $ZSH_POLYJUICE_PLUGINS_PATH/fzf-tab/fzf-tab.plugin.zsh # should load before autosuggestions/syntax-highlighting fi if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then source $ZSH_POLYJUICE_PLUGINS_PATH/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh ZSH_AUTOSUGGEST_STRATEGY=(history completion) ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20 bindkey '^[l' autosuggest-accept # alt-L to accept autosuggestion fi if [[ -f $ZSH_POLYJUICE_PLUGINS_PATH/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh ]]; then source $ZSH_POLYJUICE_PLUGINS_PATH/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh fi fi # using starship as prompt if (( $+commands[starship] )); then export STARSHIP_CONFIG="$ZSH_POLYJUICE_STARSHIP_CONFIG_FILE" eval "$(starship init zsh)" else echo '[starship] not found, please install it.' fi