# 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{,}