# vim: set ft=sh:
venv_prompt() {
  [[ -n ${VIRTUAL_ENV} ]] || return
  echo -e "%F{yellow}%f ${VIRTUAL_ENV:t:gs/%/%%}"
}

function write_title_cmd() {
    if [ ${1[(w)1]} != "lfwrap" ]; then
        echo -ne "\033]0;$(print -P "%n@%m [%3~] » ${1[(w)1]}")\007"
    fi
}

function write_title_wd() { echo -ne "\033]0;$(print -P "%n@%m [%3~]")\007" }

function reset_beam() { echo -ne '\e[5 q' }

function lfwrap () {
    LF_DIRFILE="/tmp/lfdir.$(uuidgen)"
    lfub -last-dir-path="$LF_DIRFILE"
    dir="$(cat "$LF_DIRFILE")"
    rm "$LF_DIRFILE"
    if [ -d "$dir" ]; then
        if [ "$dir" != "$(pwd)" ]; then
            cd "$dir"
        fi
    fi
    zle reset-prompt
    zle redisplay
    write_title_wd
    reset_beam
}

zle -N lfwrap

# Cursor Shape
function zle-keymap-select () {
    case $KEYMAP in
        vicmd) echo -ne '\e[1 q';;      # block
        viins|main) echo -ne '\e[5 q';; # beam
    esac
}
zle -N zle-keymap-select
zle-line-init() {
    zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
    echo -ne "\e[5 q"
}
zle -N zle-line-init

# CMDLine Edit
zle -N edit-command-line

# Lazygit
function lg () {
    [ ! -d "$(pwd)/.git" ] && [[ $(read -erk "?Not in a git repository. Create a new git repository? (y/n): ") =~ ^[Yy]$ ]] && git init
    [ -d "$(pwd)/.git" ] && lazygit -p "$(pwd)"
    zle reset-prompt
}
zle -N lg