slick

async ZSH prompt in Rust inspired by:

How to use

Add this to your .zshrc:

typeset -g slickpromptdata

```sh function slickpromptrefresh { if ! read -r slickpromptdata <&$1; then slickpromptdata=" " fi PROMPT=$($HOME/projects/rust/slick/target/debug/slick prompt -k "$KEYMAP" -r $? -d $slickpromptdata)

zle reset-prompt

# Remove the handler and close the fd
zle -F $1
exec {1}<&-

}

function zle-line-init zle-keymap-select { PROMPT=$($HOME/projects/rust/slick/target/debug/slick prompt -k "$KEYMAP" -r $? -d $slickpromptdata) zle && zle reset-prompt }

function slickpromptprecmd() { exec {FD}< <( $HOME/projects/rust/slick/target/debug/slick precmd ) zle -F $FD slickpromptrefresh }

function slickpromptpreexec() { typeset -g promptslickcmd_timestamp=$EPOCHSECONDS }

zle -N zle-line-init zle -N zle-keymap-select autoload -Uz add-zsh-hook add-zsh-hook precmd slickpromptprecmd add-zsh-hook preexec slickpromptpreexec ```