# ~/.zshrc — managed by chezmoi

# History
HISTFILE="$HOME/.zsh_history"
HISTSIZE=10000
SAVEHIST=10000
setopt SHARE_HISTORY HIST_IGNORE_DUPS

# Completion
autoload -Uz compinit && compinit

# PATH extras / tool envs (machine-optional, guarded)
case ":$PATH:" in *":$HOME/.local/bin:"*) ;; *) PATH="$HOME/.local/bin:$PATH" ;; esac
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
[ -d "$HOME/.maestro/bin" ] && PATH="$PATH:$HOME/.maestro/bin"

# Shared aliases (same set as fish/bash; source of truth: .chezmoidata/aliases.yaml)
[ -f "$HOME/.config/shell/aliases.sh" ] && . "$HOME/.config/shell/aliases.sh"

# Shell functions — one file per function, zsh ports of the fish ones
# (cwd/history-touching helpers; standalone tools live in ~/.local/bin)
if [ -d "$HOME/.config/zsh/functions" ]; then
    for _f in "$HOME/.config/zsh/functions"/*.zsh; do
        [ -r "$_f" ] && . "$_f"
    done
    unset _f
fi

# ZLE keybinds — zsh ports of fish_user_key_bindings.fish
[ -f "$HOME/.config/zsh/keybinds.zsh" ] && . "$HOME/.config/zsh/keybinds.zsh"

# suvadu shell history (replaces atuin here; fish keeps atuin — suvadu has no
# fish support yet, bash still on atuin too)
command -v suv >/dev/null 2>&1 && eval "$(suv init zsh)"

# Generated for envman. Do not edit.
[ -s "$HOME/.config/envman/load.sh" ] && . "$HOME/.config/envman/load.sh"

# Prompt — starship, consistent with fish
command -v starship >/dev/null 2>&1 && eval "$(starship init zsh)"

# Fish-style syntax highlighting (zsh-users/zsh-syntax-highlighting).
# MUST stay last in .zshrc: it wraps every zle widget defined above
# (keybinds, compinit, suv/starship hooks).
for _zsh_hl in \
    /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh \
    /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh \
    /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh; do
    [ -r "$_zsh_hl" ] && . "$_zsh_hl" && break
done
unset _zsh_hl
