# For interactive shells
HISTFILE=~/.zhistory
HISTSIZE=10000
SAVEHIST=10000
setopt \
  alwaystoend \
  appendhistory \
  autocd \
  autolist \
  automenu \
  autoparamslash \
  autopushd \
  banghist \
  cbases \
  completeinword \
  extendedglob \
  extendedhistory \
  histexpiredupsfirst \
  histfindnodups \
  histignoredups \
  histignorespace \
  histlexwords \
  histsavenodups \
  histverify \
  interactivecomments \
  longlistjobs \
  multios \
  nohup \
  nomatch \
  notify \
  pushdignoredups \
  pushdsilent \
  pushdtohome \
  rcquotes \
  sharehistory
unsetopt \
  beep \
  cdablevars \
  histbeep \
  listbeep \
  flowcontrol \
  mailwarning \
  hup \
  bgnice \
  checkjobs
# vi keybindings
bindkey -v

# Allow core files
ulimit -c unlimited

DIRSTACKSIZE=16
# Set terminal title
case $TERM in
  xterm*)
    precmd () {print -Pn "\e]0;%n@%m: %~\a"}
    ;;
esac

autoload -U colors && colors
PS1="%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] %{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[white]%}%#%{$reset_color%} "

zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"

# .profile is universal
. ~/.profile
# Deduplicate the path
typeset -U path

# Additional Keybindings
bindkey '^[[A' history-search-backward
bindkey '^[[B' history-search-forward
# ctrl-arrow keys
bindkey '^[[1;5C' forward-word
bindkey '^[[1;5D' backward-word
bindkey '^P' up-history
bindkey '^N' down-history
bindkey '^?' backward-delete-char
bindkey '^h' backward-delete-char
# ok, a few emacs convenience bindings
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward

# Source extras and aliases if interactive
if [[ $- == *i* ]] ; then
  if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
  # zsh-only-ism to avoid error if glob doesn't expand
  for file in $HOME/.zshrc.d/[a-zA-Z0-9]*.zsh(N) ; do
    source "$file"
  done
  # extra completions, prompt
  fpath=(~/.zshrc.completions ~/.zshrc.d/matir_prompt $fpath)
  # Completion
  zstyle ':compinstall' filename "${HOME}/.zshrc"
  zstyle ':completion:*' users root ${USER}
  # Modules after fpath
  autoload -Uz compinit && compinit -i
  autoload -Uz promptinit && promptinit
  # Prompt
  prompt matir
  # Virtualenvwrapper
  if test -f /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh ; then
    source /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh
  fi
  # Enable grc if we have it
  if ls --version 2>&1 >/dev/null ; then
    alias ls='ls --color -C'
  fi
  [[ -s "/etc/grc.zsh" ]] && source /etc/grc.zsh
  # Syntax highlighting and substring search
  if test -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ; then
    source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
  fi
  if test -f ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh ; then
    source ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh
    bindkey '^[[A' history-substring-search-up
    bindkey '^[[B' history-substring-search-down
    bindkey -M vicmd 'k' history-substring-search-up
    bindkey -M vicmd 'j' history-substring-search-down
  fi
fi  # End interactive-only block

# In case ack is named ack-grep
if [ -x /usr/bin/ack-grep ] ; then
  alias ack='/usr/bin/ack-grep'
fi

# Setup PATH for tools
PATH=${PATH}:${HOME}/bin/tools

# Most is nice, if we have it
if command -v most >/dev/null 2>&1; then
  export PAGER="most"
fi

# Load any local settings
if [ -e $HOME/.zshrc.local ] ; then source $HOME/.zshrc.local ; fi
