# call `zprof` to profile all calls in the current shell
# Uncomment here and at the bottom of the file, then fully reopen a terminal
# zmodload zsh/zprof

# Install oh-my-zsh if it doesn't exist
if [ ! -d $HOME/.oh-my-zsh/ ]
then
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fi

### ZSH Configuration
## Path variables
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"

export MANPAGER="less -R --use-color -Dd+r -Du+b" # Colored MAN pages

ZSH_THEME="fb-custom"

# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
HYPHEN_INSENSITIVE="true"
DISABLE_AUTO_UPDATE="true"

### Plugins
# Install the zsh-autosuggestions plugin if it doesn't exist
if [ ! -d ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions ]
then
    git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
fi

plugins=(
    fzf
    zsh-autosuggestions
    virtualenvwrapper # Used for autoloading project .venvs
)

# Load Oh My ZSH
source $ZSH/oh-my-zsh.sh

# ZSH options
setopt NO_clobber # Do not clobber files by default
setopt hist_ignore_all_dups # Replace old history with the newest call to an identical call
setopt hist_ignore_space # Remove history lines that start with spaces

# Experimental
setopt append_history inc_append_history share_history
setopt auto_param_slash
setopt no_case_glob no_case_match

# Completion options
# Give descriptions of what the types of completions given
zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
# Give an actual output when there is no match
zstyle ':completion:*:warnings' format '%BNo matches for: %d%b'

### User configuration
export EDITOR=nvim
export NVM_CONFIG_PREFIX=$HOME/.local/

# Paths to prepend to system path
path=(
    $GOPATH/bin
    $HOME/.cargo/bin
    $HOME/.local/bin
    $NVM_CONFIG_PREFIX/bin
    $path
)

# Autoload keychain for ssh-agent handling if it is installed
if command -v keychain &> /dev/null
then
    eval $(keychain --eval --quiet --nogui --noask)
fi

### Environment specific include files
include_files=(
    "$HOME/.config/zsh/fb_theme.zsh"
    "$HOME/.config/zsh/zsh_local.zsh"
    "$HOME/.config/zsh/zsh_aliases.zsh"
    "$HOME/.config/zsh/zsh_exports.zsh"
    "$HOME/.config/zsh/zsh_functions.zsh"
)

for file in $include_files; do
    if [ ! -f $file ]
    then
        touch $file
    fi

    source $file
done

# Call to zprof for startup timings
# zprof
