diff --git a/config/zsh/functions/prompt_pure_set_title b/config/zsh/functions/prompt_pure_set_title new file mode 100644 index 0000000..21376f5 --- /dev/null +++ b/config/zsh/functions/prompt_pure_set_title @@ -0,0 +1,27 @@ +#! zsh +# copied from https://github.com/sindresorhus/pure/blob/43aafe0b4dc05174c57ee623c03c64400e832ece/pure.zsh#L56 +setopt localoptions noshwordsplit + +# Emacs terminal does not support settings the title. +(( ${+EMACS} || ${+INSIDE_EMACS} )) && return + +case $TTY in + # Don't set title over serial console. + /dev/ttyS[0-9]*) return;; +esac + +# Show hostname if connected via SSH. +local hostname= +if [[ -n $prompt_pure_state[username] ]]; then + # Expand in-place in case ignore-escape is used. + hostname="${(%):-(%m) }" +fi + +local -a opts +case $1 in + expand-prompt) opts=(-P);; + ignore-escape) opts=(-r);; +esac + +# Set title atomically in one print statement so that it works when XTRACE is enabled. +print -n $opts $'\e]0;'${hostname}${2}$'\a' diff --git a/config/zsh/functions/starship_pure_title_precmd b/config/zsh/functions/starship_pure_title_precmd new file mode 100644 index 0000000..3498cc3 --- /dev/null +++ b/config/zsh/functions/starship_pure_title_precmd @@ -0,0 +1,3 @@ +#! zsh +autoload prompt_pure_set_title +prompt_pure_set_title 'expand-prompt' '%~' diff --git a/config/zsh/functions/starship_pure_title_preexec b/config/zsh/functions/starship_pure_title_preexec new file mode 100644 index 0000000..cd8e657 --- /dev/null +++ b/config/zsh/functions/starship_pure_title_preexec @@ -0,0 +1,3 @@ +#! zsh +autoload prompt_pure_set_title +prompt_pure_set_title 'ignore-escape' "$PWD:t: $2" diff --git a/config/zsh/zinit b/config/zsh/zinit index 80af74f..5d2de76 100644 --- a/config/zsh/zinit +++ b/config/zsh/zinit @@ -17,6 +17,9 @@ zinit $load rupa/z if (( $+commands[starship] )); then source <(starship init zsh --print-full-init) + autoload starship_pure_title_precmd starship_pure_title_preexec + precmd_functions+=(starship_pure_title_precmd) + preexec_functions+=(starship_pure_title_preexec) else zinit $load sindresorhus/pure fi