# ╔═══════════════════════════════════════════════════════════════════════╗
# ║  Shell Integration — OSC 133 (prompt marks) + OSC 7 (cwd)            ║
# ║  Permite Alacritty + tmux pularem entre prompts (vi-mode: ]  [ )     ║
# ║  Adicionar ao ~/.bashrc ou ~/.zshrc                                   ║
# ╚═══════════════════════════════════════════════════════════════════════╝

# Detecta shell
if [ -n "$ZSH_VERSION" ]; then
    # ─── ZSH ──────────────────────────────────────────────────────────────
    _alacritty_precmd() {
        # OSC 133 D — terminou comando anterior (exit code)
        print -Pn "\e]133;D;%?\e\\"
        # OSC 133 A — início de prompt
        print -Pn "\e]133;A\e\\"
        # OSC 7 — cwd (pra Alacritty/tmux saber e abrir splits no dir certo)
        print -Pn "\e]7;file://%m%d\e\\"
    }
    _alacritty_preexec() {
        # OSC 133 C — comando executando
        print -n "\e]133;C\e\\"
    }
    # OSC 133 B (após PS1) é emitido pela integração ao printar newline entre A e B
    precmd_functions+=(_alacritty_precmd)
    preexec_functions+=(_alacritty_preexec)

elif [ -n "$BASH_VERSION" ]; then
    # ─── BASH ─────────────────────────────────────────────────────────────
    _alacritty_ps1_before=$'\[\e]133;A\e\\\]'
    _alacritty_ps1_after=$'\[\e]133;B\e\\\]'
    PS1="${_alacritty_ps1_before}${PS1}${_alacritty_ps1_after}"

    _alacritty_preexec() { printf '\e]133;C\e\\'; }
    _alacritty_precmd()  {
        local ec=$?
        printf '\e]133;D;%s\e\\' "$ec"
        printf '\e]7;file://%s%s\e\\' "$(hostname)" "$PWD"
    }
    trap '_alacritty_preexec' DEBUG
    PROMPT_COMMAND="_alacritty_precmd;${PROMPT_COMMAND:-}"
fi

# ╔═══════════════════════════════════════════════════════════════════════╗
# ║  Benefícios                                                           ║
# ║  - Alacritty vi-mode: ] pula pro próximo prompt, [ pro anterior       ║
# ║  - Terminal sabe qual é output vs prompt                              ║
# ║  - Claude Code e outros tools podem parsear prompts com precisão     ║
# ║  - `alacritty msg create-window --working-directory ...` funciona    ║
# ╚═══════════════════════════════════════════════════════════════════════╝
