## global settings
# history
HISTFILE="${HOME}/.zsh_history"
HISTSIZE=500000
SAVEHIST=500000

# bindkeys
bindkey '^[[A'  up-line-or-search                   # up arrow for back-history-search
bindkey '^[[B'  down-line-or-search                 # down arrow for fwd-history-search
bindkey '\e[1~' beginning-of-line                   # home
bindkey '\e[2~' overwrite-mode                      # insert
bindkey '\e[3~' delete-char                         # del
bindkey '\e[4~' end-of-line                         # end
bindkey '\e[5~' up-line-or-history                  # page-up
bindkey '\e[6~' down-line-or-history                # page-down
# tmux workaround http://superuser.com/questions/403355/how-do-i-get-searching-through-my-command-history-working-with-tmux-and-zshell
bindkey '^R'    history-incremental-search-backward # search for history

# autocomplit
autoload -U compinit
compinit
autoload -U bashcompinit
bashcompinit
# first symbol autocomplete
zstyle ':completion:*' insert-tab false
zstyle ':completion:*' max-errors 2
# correct host complete
[[ -f ${HOME}/.ssh/config ]] && zstyle ':completion:*' hosts $(awk '/^Host .*$/ { print $2 }' "${HOME}/.ssh/config")

# prompt
autoload -U promptinit
promptinit

# colors
autoload -U colors
colors

# autocd
setopt autocd

# correct
setopt CORRECT_ALL
SPROMPT="Correct '%R' to '%r' ? (nyae) "

# append history
setopt APPEND_HISTORY

# ignore dups in history
setopt HIST_IGNORE_ALL_DUPS

# ighore additional space in history
setopt HIST_IGNORE_SPACE

# reduce blanks in history
setopt HIST_REDUCE_BLANKS

# =cmd without autocomplit
unsetopt EQUALS

# disable beeps
unsetopt beep

# autoload calc
autoload zcalc

# automatically log of on 10*60 sec inactivity
export TMOUT=600

## common alias
alias grep='grep --colour=auto'
alias top='htop'
alias df='df -k --print-type --human-readable'
alias du='du -k --total --human-readable'
alias ssh_pohui='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'

alias ls='ls --color=auto --group-directories-first'
alias ll='ls -l --human-readable'
alias lr='ls --recursive'
alias la='ll --almost-all'
alias lx='ll -X --ignore-backups'
alias lz='ll -S --reverse'
alias lt='ll -t --reverse'
alias lm='la | more'

# global alias
alias -g _g='| grep'
alias -g _l='| less'
alias -g _t='| tail'
alias -g _h='| head'
alias -g _n='| wc -l'
alias -g _dn='&> /dev/null &'

# to run command ignoring aliases
hash -d b="/bin"

# umask
umask 022

## environment
# editor
export EDITOR="vim"
# color gcc
export GCC_COLOR="auto"
# goshit
export GOPATH="${HOME}/.local/go"
# path
for _DIR in $(find "${HOME}/.local/bin" -type d 2> /dev/null); do export PATH="${_DIR}:${PATH}"; done
# load valid ssh config
/bin/rm -f "${HOME}/.ssh/config"
find "${HOME}/.ssh/conf.d" -type f -name '*.conf' -exec cat {} > "${HOME}/.ssh/config" \; 2> /dev/null

# load custom settings from $HOME/.zsh
if [[ -a ${HOME}/.zsh-plugins ]]; then
    for _SRC in $(cat "${HOME}/.zsh-plugins"); do source "${HOME}/.zsh/${_SRC}"; done
fi