# ================================
# zsh configuration
# ================================

# ================================
# Plugin Management (Zinit)
# ================================

# Initialize Zinit
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
if [ ! -d "$ZINIT_HOME" ]; then
   mkdir -p "$(dirname $ZINIT_HOME)"
   git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
fi
source "${ZINIT_HOME}/zinit.zsh"

# Load plugins
# Arch Linux standard plugins (prefer pacman versions when available)
# pacman -S zsh-syntax-highlighting zsh-autosuggestions
if [[ -f /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]]; then
    source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
else
    zinit light zsh-users/zsh-syntax-highlighting
fi

if [[ -f /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then
    source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
else
    zinit light zsh-users/zsh-autosuggestions
fi

# Additional useful plugins
zinit light zsh-users/zsh-completions
zinit light Aloxaf/fzf-tab

# Note: Removed dependency on syui---powerline.zsh plugin
# Powerline functionality is now integrated directly above

# Load completions
autoload -U compinit && compinit

# Plugin configurations
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#666666"

# History
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_IGNORE_SPACE
setopt HIST_FIND_NO_DUPS
setopt HIST_REDUCE_BLANKS
setopt SHARE_HISTORY

# Directory navigation
setopt AUTO_CD
setopt AUTO_PUSHD
setopt PUSHD_IGNORE_DUPS

# Completion
autoload -Uz compinit
compinit
setopt AUTO_MENU
setopt COMPLETE_ALIASES

# Key bindings
bindkey -e
bindkey '^R' history-incremental-search-backward

# ================================
# Airline.zsh Plugin
# ================================

# Load airline.zsh plugin via zinit
zinit load syui/airline.zsh

# Aliases
alias ll='ls -la'
alias la='ls -a'
alias l='ls -CF'
alias grep='grep --color=auto'
alias ..='cd ..'
alias ...='cd ../..'

# Git aliases
alias g='git'
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline'
alias gd='git diff'

# Tmux aliases
alias t='tmux'
alias ta='tmux attach'
alias tl='tmux list-sessions'

# Functions
mkcd() {
    mkdir -p "$1" && cd "$1"
}

# Load local zshrc if exists
[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local

# Environment variables
export EDITOR=nvim
export VISUAL=nvim
export PAGER=less
export LESS='-R'

# Path additions
export PATH="$PATH:$HOME/.local/bin"
export PATH="$PATH:$HOME/bin"
export PATH="/usr/local/sbin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"

case $OSTYPE in
	darwin*)
		export PATH="/opt/homebrew/bin:$PATH"
		export PATH="/opt/homebrew/sbin:$PATH"
	;;
	linux*)
	;;
esac