Files

58 lines
1.0 KiB
Bash
Raw Permalink Normal View History

if [[ -f $USER_ZDOTDIR/.zshrc ]]; then
ZDOTDIR=$USER_ZDOTDIR
. $USER_ZDOTDIR/.zshrc
fi
__is_prompt_start() {
builtin printf '\e]6973;PS\a'
}
__is_prompt_end() {
builtin printf '\e]6973;PE\a'
}
__is_escape_value() {
builtin emulate -L zsh
# Process text byte by byte, not by codepoint.
builtin local LC_ALL=C str="$1" i byte token out=''
for (( i = 0; i < ${#str}; ++i )); do
byte="${str:$i:1}"
# Escape backslashes and semi-colons
if [ "$byte" = "\\" ]; then
token="\\\\"
elif [ "$byte" = ";" ]; then
token="\\x3b"
else
token="$byte"
fi
out+="$token"
done
builtin print -r "$out"
}
__is_update_cwd() {
builtin printf '\e]6973;CWD;%s\a' "$(__is_escape_value "${PWD}")"
}
__is_update_prompt() {
__is_prior_prompt="$PS1"
if [[ $ISTERM_TESTING == "1" ]]; then
__is_prior_prompt="> "
fi
PS1="%{$(__is_prompt_start)%}$__is_prior_prompt%{$(__is_prompt_end)%}"
}
__is_precmd() {
if [[ $PS1 != *"$(__is_prompt_start)"* ]]; then
__is_update_prompt
fi
__is_update_cwd
}
__is_update_prompt
add-zsh-hook precmd __is_precmd