async ZSH prompt in Rust inspired by:
Install:
cargo install slick
check your PATH
$HOME/.cargo/bin/slick
Then add this to your .zshrc
:
```sh zle -N zle-keymap-select zle -N zle-line-init zmodload zsh/datetime autoload -Uz add-zsh-hook add-zsh-hook precmd slickpromptprecmd add-zsh-hook preexec slickpromptpreexec
typeset -g slickpromptdata=" " typeset -g slickprompttimestamp=$EPOCHSECONDS
function slickpromptrefresh { if ! read -r slickpromptdata <&$1; then slickpromptdata=" " fi PROMPT=$(slick prompt -k "$KEYMAP" -r $? -d $slickpromptdata -t $slickprompttimestamp)
zle reset-prompt
# Remove the handler and close the fd
zle -F $1
exec {1}<&-
}
function zle-line-init zle-keymap-select { PROMPT=$(slick prompt -k "$KEYMAP" -r $? -d $slickpromptdata -t $slickprompttimestamp) zle && zle reset-prompt }
function slickpromptprecmd() { exec {FD}< <(slick precmd) zle -F $FD slickpromptrefresh }
function slickpromptpreexec() { typeset -g slickprompttimestamp=$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 ```