prompt_faraday_overmind_sock () { if [[ -e .overmind.sock ]]; then echo "ॐ " else echo "" fi } prompt_faraday_precmd () { print -Pn '\e]0;%~\a' # show the full path in the window title vcs_info # ensure vcs plugin has pulled info PROMPT="%F{#777788}%D{%H:%M} %(?.%F{#9999bb}.%F{#ff8888})%(!.#.>)%f " RPROMPT="%F{#daa520}$(prompt_faraday_overmind_sock)%F{#dddddd}${vcs_info_msg_0_} %F{#99ccff}%2~%f" } prompt_faraday_setup () { autoload -Uz add-zsh-hook autoload -Uz vcs_info zstyle ':vcs_info:*' enable jj git zstyle ':vcs_info:*' check-for-changes true # format for git zstyle ':vcs_info:git*+set-message:*' hooks git-time-since-commit zstyle ':vcs_info:git*' formats ' %F{#777788}[%s] %F{#AAAABB}%b %F{#777788}[%m]%f ' zstyle ':vcs_info:git*' actionformats ' %b|%a %F{#777788}[%s][%m]%f' # format for jj zstyle ':vcs_info:jj:*' formats ' %F{#777788}[%s] %f%i %F{#AAAABB}%m%f ' '%b' zstyle ':vcs_info:jj:*' actionformats '%a|%i' '%b' add-zsh-hook precmd prompt_faraday_precmd prompt_faraday_precmd } function +vi-git-time-since-commit() { local last_commit_epoch=$(git log -1 --format=%ct 2>/dev/null) if [[ -z "$last_commit_epoch" ]]; then return 0 fi local current_epoch=$(date +%s) local diff_seconds=$((current_epoch - last_commit_epoch)) local time_since_commit if (( diff_seconds < 60 )); then time_since_commit="${diff_seconds}s" elif (( diff_seconds < 3600 )); then time_since_commit="$((diff_seconds / 60))m" elif (( diff_seconds < 86400 )); then time_since_commit="$((diff_seconds / 3600))h" else time_since_commit="$((diff_seconds / 86400))d" fi hook_com[misc]+=$time_since_commit return 0 } prompt_faraday_setup "$@"